文章目录
发布与订阅
通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,当其他客户端向频道发送消息时,订阅者或者匹配频道的订阅者都会收到消息
原理
- 订阅:当客户端执行SUBSCRIBE命令时,服务器会将客户端与pubsub_channels字典关联,如果当前频道没有订阅者,则在字典中创建一个当前频道的键,值设置为空链表,客户端添加到链表;如果当前频道有订阅者,则将客户端添加到对应的键的链表末尾
- 退订:当客户端执行UNSUBSCRIBE命令时,与SUBSCRIBE命令操作相反
// 订阅频道
SUBSCRIBE <channel>
// 退订频道
UNSUBSCRIBE <channel>
// 订阅模式,按照模式匹配频道
PSUBSCRIBE <pattern>
// 退订模式
PUNSUBSCRIBE <pattern>
// 发送消息
PUBLISH <channel> <message>
// 返回服务器当前被订阅的频道,如果没有pattern则返回所有频道
PUBSUB CHANNELS [pattern]
// 返回这些频道的订阅者数量
PUBSUB NUMSUB [channel-1 channel-2 ...]
// 返回服务器当前被订阅模式的数量
PUBSUB NUMPAT