共计 1758 个字符,预计需要花费 5 分钟才能阅读完成。
在理论开发工作中,常常会遇到音讯公布、订阅的利用场景,就好象是电台播送,只有你收听了某个频道,那么在这个频道上播放的内容你都可能听到,没有收听的天然也就听不到,很多开源工具都对这种设计模式有很好的反对,比方 RabbitMQ 中就有 Pub/Sub 音讯队列。同样 Redis 也反对这种模式的音讯公布,而且非常简单。那么上面就来一起学习吧!
一. Redis 音讯的公布与订阅
1)Redis 公布订阅
Redis 公布订阅 (pub/sub) 是一种音讯通信模式:发送者 (pub) 发送音讯,订阅者 (sub) 接管音讯。Redis 客户端能够订阅任意数量的频道。
2)Redis 公布订阅示意图
图一:音讯订阅者 (client2、client5 和 client1) 订阅频道 channel1:
图二:音讯发布者公布音讯到频道 channel1,会被发送到三个订阅者:
3)Redis 公布订阅的常用命令
1.1 subscribe
语法:subscribe channel [channel…]
性能:订阅一个或多个频道的信息
返回值:订阅的音讯
1.2 publish
语法:publish chanel message
性能:将信息发送到指定的频道。
返回值:数字。接管到音讯订阅者的数量。
1.3 psubscribe
语法:psubscribe pattern [pattern]
性能:订阅一个或多个合乎给定模式的频道。模式以 作为通配符,例如:news. 匹配所有以 news. 结尾的频道。
返回值:订阅的信息。
二、Redis 的主从复制
1)主从复制
主机数据更新后依据配置和策略,主动同步到从机的 master/slave 机制,Master 以写为主,Slave 以读为主。
2)一主二从
1.1 一主二从原理
- 配从 (库) 不配主(库)
- 配从(库): slaveof 主库 IP 主库端口
- 主写从读、读写拆散
- 从连前后同
- 主断从待命、从断从新连
1.2 一主二从搭建
3)一台服务器模仿三台主机:
第一步:将 redis.conf 拷贝三份,名字别离是,redis6379.conf,redis6380.conf,redis6381.conf\
第二步:批改三个文件的 port 端口,pid 文件名,日志文件名,rdb 文件名
如:
port 6379
pidfile /var/run/redis_6379.pid
logfile “6379.log”
dbfilename dump6379.rdb\
第三步:别离关上三个窗口模仿三台服务器,开启 redis 服务。
4)从连前后同
5)主断从待命、从断从新连
三、一主二从搭建
1、一台服务器模仿三台主机:
第一步:将 redis.conf 拷贝三份,名字别离是,redis6379.conf,redis6380.conf,redis6381.conf\
第二步:批改三个文件的 port 端口,pid 文件名,日志文件名,rdb 文件名
如:
port 6379
pidfile /var/run/redis_6379.pid
logfile “6379.log”
dbfilename dump6379.rdb\
第三步:别离关上三个窗口模仿三台服务器,开启 redis 服务。
2、查问主从信息:info replication
3、写操作 6379:
4、设置主从关系:
在 6380 和 6381 主机上别离执行命令:slaveof 127.0.0.1 6379
另一种形式,就是批改 6380 和 6381 的配置文件,在最初加上:
留神:如果主 redis 设置了明码,从库的 redis.conf 中还须要设置 masterauth 为主 redis 的明码。
5、全量复制:在 6380 和 6381 别离执行命令 get k1
6、增量复制:6379 执行命令:set k2 v2。而后 6380 端口和 6381 端口,别离执行命令:get k2
7、主写从读、读写拆散:在 6380 和 6381 上执行写操作 set k3 v3
8、主机宕机:6379 执行指令 shutdown,并查看 6380 和 6381 的 redis 信息
从机原地待命。
9、主机宕机后复原:重启 6379,并且执行写命令 set k4 v4;6380 和 6381 上别离执行 get k4
主机重启后,一切正常。
10、从机宕机:6380 执行指令 shutdown,并查看 6379 和 6381 的 redis 信息
总的来说两者的区别在于音讯队列是抢音讯,只有一个失去,而公布订阅是所有订阅的人都会失去。