------------恢复内容开始------------
一.基本使用 》》》 依据官方文档
(1)生产端
# python 操作我们rabbitMq 需要的模块 pika # pip install pika import pika # 建立和RabbitMQ的链接 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) # 通过句柄 channel = connection.channel() # 声明消息队列 channel.queue_declare(queue = 'hello') # body 一个内容体 往队列中进行发消息 channel.basic_publish(exchange='', routing_key='hello', body='Hello World!') print("[x]发送'Hello World!'") # 关闭 connection.close()
(2)消费端
# 取消息 import pika # 建立和RabbitMQ的链接 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) # 通过句柄 channel = connection.channel() # 确认我们的queue的是存在的 channel.queue_declare(queue='hello') # 申明回调函数 def callback(ch, method, properties, body): print(" [x] Received %r" % body) # 从Q 中取消息 channel.basic_consume(queue='hello', auto_ack=True, on_message_callback=callback) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming() # 开始消费
(3)执行
窗口一 放信息
窗口二 收消息
二.redis的高级部分
(1)linux 命令行实现安装和启动
#下载
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# 解压
tar -zxvf redis-5.0.7.tar.gz
# 建立软连接
ln -s redis-5.0.7 redis
# 相关信息
cd redis make&&make install #在src目录下可以看到 #redis-server--->redis服务器 #redis-cli---》redis命令行客户端 #redis-benchmark---》redis性能测试工具 #redis-check-aof--->aof文件修复工具 #redis-check-dump---》rdb文件检查工具 #redis-sentinel---》sentinel服务器,哨兵 #redis作者对windows维护不好,window自己有安装包
(2)三种命令行启动方式
1.最简单的启动
redis-server
相关的参数命令
ps -ef|grep redis #查看进程 netstat -antpl|grep redis #查看端口 redis-cli -h ip -p port ping #命令查看
2.动态参数启动
#动态参数启动 redis-server --port 6380 #启动,监听6380端口
3.vim redis_6379.conf进行配置文件启动
(1)配置
daemonize no #是否以守护进程启动 一般是改为yes 开启进行守护 pidfile /var/run/redis.pid #进程号的位置,删除 port 6379 #端口号 dir "opt/soft/redis/data" #工作目录 》》》 事先要进行文件存放的目录 logfile “6379.log” #日志位置
(2)启动命令
# 一般启动redis服务 redis-sever redis_6379.conf 启动配置文件即可 # 因为环境没有配置的原因 ./src/redis-server redis_6379.conf
# 查看进程号
#查看进程 ps -ef |grep redis-server |grep 6379 #查看日志 cd data cat 6379.log
####客户端连接###
redis-cli -h 127.0.0.1 -p 6379 ping #返回PONG
`
(2)应用场景
### 1.4 Redis典型使用场景 缓存系统: 计数器:网站访问量,转发量,评论数 消息队列:发布订阅,阻塞队列实现 排行榜:有序集合 社交网络:很多特性跟社交网络匹配,粉丝数,关注数 实时系统:垃圾邮件处理系统,布隆过滤器
三. 一主多从
查询进行id
ps -ef |grep redis-server
配置:文件
复制一份配置文件
cp redis_6379.conf redis_6378.conf
daemonize yes bind 0.0.0.0 # 127.0.0.1 只能连接本地 这样既可以进行外部redis连接 pidfile /var/run/redis.pid port 6378 # 端口号 dir "/root/data" # 数据存储文件 logfile "6378.log" # 日志文件
# 一主多重 切换redis 服务器
cd redis
./src/redis-cli -p 6378
(1)方式一:slave 执行主从命令
6378是从,6379是主 在6378上执行 slaveof 127.0.0.1 6379 #异步 slaveof no one #取消复制,不会把之前的数据清除
./src/redis-cli -p 6379 写数据
# 客户端主是6379 负责写数据 从客户端6378负责读取数据
(2)文件的配置方式二:
# 在redis 服务端文件vim 进行配置
slaveof ip port #配置从节点ip和端口 slave-read-only yes #从节点只读,因为可读可写,数据会乱
配置 :从连接主
daemonize yes bind 0.0.0.0 pidfile /var/run/redis.pid port 6378 dir "/root/data" logfile "6378.log" slaveof 127.0.0.1 6379 slave-read-only yes
(3)解决主从复制 万一主挂了的问题 》》》 利用哨兵 高可用的方法进行 解决:起一个sentinel 进行 进行监听 主服务器的情况
port 26379 daemonize yes dir /data protected-mode no bind 0.0.0.0 logfile "redis_sentinel.log" sentinel monitor mymaster 10.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000
启动哨兵
redis-sentinel sentinel.conf
python链接
import redis from redis.sentinel import Sentinel # 连接哨兵服务器(主机名也可以用域名) # 10.0.0.101:26379 sentinel = Sentinel([('10.0.0.101', 26379), ('10.0.0.101', 26378), ('10.0.0.101', 26377) ], socket_timeout=5) print(sentinel) # 获取主服务器地址 master = sentinel.discover_master('mymaster') print(master) # 获取从服务器地址 slave = sentinel.discover_slaves('mymaster') print(slave) # 获取主服务器进行写入 # master = sentinel.master_for('mymaster', socket_timeout=0.5) # w_ret = master.set('foo', 'bar') # # # # # slave = sentinel.slave_for('mymaster', socket_timeout=0.5) # r_ret = slave.get('foo') # print(r_ret)