Redis消息队列
生产者/消费者模式(PUSH/POP)
基于阻塞队列实现
BRPOP key [key …] timeout 超时时间内,从队列右侧阻塞式弹出元素
BLPOP key [key …] timeout
(可先生产再消费,也可消费者先阻塞获取等待生产者入队)
入队
127.0.0.1:6379>RPUSH my_list “Spark” “hadoop”"hive"
(integer) 3
127.0.0.1:6379>LRANGE my_list 0 -1
1)“Spark”
2)“Hadoop”
3)“Hive”
出队
127.0.0.1:6379>BLPOP my_list other_list1 other_list2 60
1)“my_list1” #执行弹出操作的列表
2)“Spark” #被弹出的项
Redis只提供了阻塞获取,因队列长度是无限的,所以不存在队列存满需等待消费者消费的情况,即只提供阻塞版本的获取即可。
发布-订阅模式(PUB/SUB)
基于Redis自身提供了PUB/SUB机制
SUBSCRIBE my_channel_1 [my_channel_2 …]
订阅给定的一个或多个频道的信息
PUBLISH my_channel_1 message
将信息message发送到指定频道my_channel_1
ClientA
127.0.0.1:6379>SUBSCRIBE my_chnnel_1
Redinging message… <press Ctrl + c to quit>
(等待生产者发布…,发布完成,收到消息)
1)“subscribe”
2)“chennel”
3)“1”
1)“message”
2)“my_chennel_1”
3)“this is my message!”
ClientB
127.0.0.1:6379>PUBLISH my_chnnel_1 "this is my message!"
(integer) 1
Sentinel
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,Master-slave的模式时主节点宕机从节点并不会自动切换。Redis-sentinel能监控多个master-slave集群,**发现Master宕机后,sentinel集群进行选举,选举出一个sentinel,根据Master配置找到Slave节点并选举其中一个升级为新的主节点(会修改相关节点的配置文件)来实现自动切换,主从切换统筹工作由单个sentinel去做。**sentinel本身也是一个redis进程,当使用哨兵模式时,客户端就不再直连redis服务机器了,而是连接哨兵机器
- sentinel侧重于高可用,而cluster侧重于存储与扩展(cluster相当于在哨兵基础上增加了扩展性)
- 当Master宕机时才会触发切换
- sentinel自身的高可用至少要有3个节点,在选举leader时必须超过50%的节点投票才能选出来,如果只有2个节点,挂了一个后sentinel集群直接不可用
- 集群模式也好单个哨兵也好,配置文件内只需配置要监控的Master节点,无需配置其他哨兵节点,它可以自动识别监控该Master的其他哨兵,并维护到一个列表中,这个列表保存了 Sentinel 已知的,监视同一个主服务器的所有其他Sentinel。
Sentinel集群配置
不是很靠谱…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88VDGQjS-1598778140276)(D:\中国制造\H\redis事务、队列\img1.jpg)]
其他Sentinel。
Sentinel集群配置
不是很靠谱…