Redis发布订阅
简介
进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息
redis pub/sub命令
1.消息的发布与订阅
subscribe channel 订阅频道,会持续接收消息
publish channel message 在某个频道发布消息,相应的订阅者会收到消息
![](https://img.haomeiwen.com/i6971875/07830b47353b152f.png)
![](https://img.haomeiwen.com/i6971875/d299ce46efe78f98.png)
![](https://img.haomeiwen.com/i6971875/20a8c375d973044f.png)
Stream
Stream是Redis5.0引入的一种新数据类型,允许消费者等待生产者发送的新数据,还引入了消费者组的概念,组之间数据是相同的(前提是设置的偏移量一样),组内的消费者不会拿到相同数据。这种概念与kafaka很相似。
原理:
与redis的pub/sub不同,pub/sub多个客户端是收到相同的数据,而stream的多个客户端是竞争关系,每个客户端收到的数据是不相同的。
Stream
生成消息的命令
1.xadd 生成消息,返回消息id(时间戳+顺序),顺序指该毫秒下产生的第几条消息
2.xlen 查看消息的长度
3.xrange machao - + 遍历Stream中所有消息
4.xdel machao 消息id 通过id删除消息
![](https://img.haomeiwen.com/i6971875/2f8e544fed7b3a51.png)
读取消息的命令
1.xread 读取消息,返回消息列表
参数 xread streams machao 0-0 遍历所有消息
支持参数count num,指定返回消息的数量
支持参数block num,可以阻塞等待消息返回,0-0应该替换为$,代表从尾部接收消息
![](https://img.haomeiwen.com/i6971875/3b7a35c66e5d04ea.png)
![](https://img.haomeiwen.com/i6971875/9b1a3270eae2e247.png)
网友评论