码迷,mamicode.com
首页 > 其他好文 > 详细

Redis发布订阅实现原理

时间:2017-04-14 09:30:22      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:存在   订阅   原理   contain   技术分享   bpa   java   订阅模式   cell   

原文出处: 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发布订阅实现原理

标签:存在   订阅   原理   contain   技术分享   bpa   java   订阅模式   cell   

原文地址:http://www.cnblogs.com/guxiong/p/6707120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!