Redis发布和订阅
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Redis发布和订阅
1.发布和订阅是什么
一句话Redis 发布订阅 (pub/sub) 是一种消息通信模式发送者 (publisher) 发送消息订阅者 (subscribe) 接收消息。
Redis 客户端可以订阅任意数量的频道
1、客户端订阅频道示意图
2、当给这个频道发布消息后消息就会发送给订阅的客户端
2.如何理解发布和订阅模式
任务队列
1、顾名思义就是"传递消息的队列"
2、与任务队列进行交互的实体有两类一类是生产者producer另一类则是消费者
consumer。生产者将需要处理的任务放入任务队列中而消费者则不断地从任务队列
中读入任务信息并执行
如何理解
- 可以这么简单的理解
- Subscriber收音机可以收到多个频道并以队列方式显示
- Publisher电台可以往不同的 FM 频道中发消息
- Channel不同频率的 FM 频道
从 Pub/Sub 的机制来看它更像是一个广播系统多个订阅者Subscriber可以订阅多
个频道Channel多个发布者Publisher可以往多个频道Channel中发布消息。
3.发布订阅模式分类
1.一个发布者多个订阅者
主要应用通知、公告
可以作为消息队列或者消息管道
- 示意图
2.多个发布者一个订阅者
各应用程序作为 Publisher 向 Channel 中发送消息Subscriber 端收到消息后执行相应的
业务逻辑比如写数据库显示…
主要应用排行榜、投票、计数
- 示意图
3.多个发布者多个订阅者
可以向不同的 Channel 中发送消息由不同的 Subscriber 接收。
主要应用群聊、聊天
- 示意图
4.命令行实现发布和订阅
发布订阅操作
1、PUBLISH channel msg
将信息 message 发送到指定的频道 channel
publish channel1 hello,llp
2、SUBSCRIBE channel [channel …]
订阅频道可以同时订阅多个频道
subscribe channel1 channel2
3、UNSUBSCRIBE [channel …]
取消订阅指定的频道, 如果不指定频道则会取消订阅所有频道
4、PSUBSCRIBE pattern [pattern …]
订阅一个或多个符合给定模式的频道每个模式以 * 作为匹配符比如 it* 匹配所 有
以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等) news.* 匹配所有 以 news. 开
头的频道( news.it 、 news.global.today 等等)诸如此类
5、PUNSUBSCRIBE [pattern [pattern …]]
退订指定的规则, 如果没有参数则会退订所有规则
快速入门
1、打开一个客户端订阅 channel1
2、打开另一个客户端给 channel1 发布消息 hello
3、返回的 1, 是订阅者数量
4、发布的消息没有持久化
5、订阅的客户端, 只能收到订阅后发布的消息