首页 > 代码库 > Redis发布订阅实现原理
Redis发布订阅实现原理
原文出处: xingoo
发布订阅中使用到的命令就只有三个:PUBLISH,SUBSCRIBE,PSUBSCRIBE
- PUBLISH 用于发布消息
- SUBSCRIBE 也叫频道订阅,用于订阅某一特定的频道
- PSUBSCRIBE 也叫模式订阅,用于订阅某一组频道,使用glob的方式,比如xxx-*可以匹配xxx-a,和xxx-b,xxx-ddd等等
订阅频道: pubsub_channels
关联操作:
- 如果已经存在订阅者,则添加到链表的尾部
- 如果没有订阅者,那么创建频道,然后添加订阅者
删除操作:
- 找到对应的链表,进行删除
- 如果删除后,链表为空,则删除频道
模式订阅: pubsub_patterns
1
2
3
|
client- 7 订阅music.* client- 8 订阅book.* client- 9 订阅news.* |
订阅模式:
- 新建一个pubsubPattern结构
- 添加到链表的尾部
退订模式:
- 查找相应的pubsubPattern然后删除
发送消息:
- 将消息发送给channel频道的所有订阅者
- 遍历整个pubsub_patterns表,查找匹配的模式,如果有一个或者多个模式与频道匹配,将消息发送给pattern模式的订阅者
相关命令:
- 查看所有的频道:PUBSUB CHANNELS
- 查询订阅者的数量:PUBSUB NUMSUB
- 查询服务器被订阅者的数量:PUBSUB NUMPAT
Redis发布订阅实现原理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。