Redis发布订阅
发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息
命令
命令及描述 |
---|
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)