Redis发布订阅

suaxi
2021-01-03 / 0 评论 / 102 阅读 / 正在检测是否收录...

Redis发布订阅

发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息

订阅发布消息.png


命令
命令及描述
PSUBSCRIBE pattern [pattern...]
订阅一个或多个符合给定模式的频道
PUBSUB subcommand [argument [argument...]]
查看订阅与发布系统状态
PUBLISH channel message
将信息发送到指定的频道
PUNSUBSCRIBE [pattern [pattern...]]
退订所有给定模式的频道
SUBSCRIBE channel [channel...]
订阅给定的一个或多个的频道信息
UNSUBSCRIBE [channel[channel...]]
退订指定的频道


测试

订阅者:

127.0.0.1:6379> SUBSCRIBE test #订阅名为test的频道
Reading messages... (press Ctrl-C to quit) #订阅之后自动监听
1) "subscribe"
2) "test"
3) (integer) 1
# 监听消息,等待推送读取
1) "message"    #消息
2) "test"        #来自哪个频道
3) "nihao"        #消息内容

1) "message"
2) "test"
3) "xiexie"

发布者:

127.0.0.1:6379> PUBLISH test nihao    #发布者发布消息到test频道
(integer) 1
127.0.0.1:6379> PUBLISH test xiexie
(integer) 1
127.0.0.1:6379> 


原理

常用于微信公众号、微博、实时聊天等

通过SUBSCRIBE命令订阅某频道后,redis-server里维护了一个字典,字典的键可以看作是一个个的频道,而字典的值则是一个链表,链表中保存了所有订阅这个频道(channel)的客户端。换句话说,就是将客户端添加到指定频道(channel)的订阅链表中。

通过PUBLISH命令向订阅者发送消息,redis-server会使用给定的频道作为键,在它所维护的频道(channel)字典中查找订阅了这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者。

0

评论 (0)

取消