命令
# 订阅频道ch1
subscribe ch1
# 发布频道ch1消息hi
publish ch1 hi
# 取消订阅
unsubscribe ch1
# 模式订阅。
# ?代表一个占位符、*代表任意占位符、?*代表1个以上占位符
psubscribe c? b* d?*
原理
发布订阅的实现其实是通过key为频道value为储存订阅频道客户端的字典的链表去实现的,发布时直接遍历所在频道的链表进行消息发送
而基于模式的订阅是通过pubsub_patterns的链表去实现的。订阅时创建包含客户端信息和模式的pubsub_patterns,并添加到链表中
在发布时,就会遍历该链表检查是否匹配模式,然后发送消息给匹配客户端
Ref
- https://redisbook.readthedocs.io/en/latest/feature/pubsub.html