当前位置: 安卓之星 -> Java开发 -> Redis发布订阅实现原理

Redis发布订阅实现原理

作者:网络 发表于: 2017-04-15 点击: 558 次

发布订阅中使用到的命令就只有三个:PUBLISH,SUBSCRIBE,PSUBSCRIBE

PUBLISH 用于发布消息
SUBSCRIBE 也叫频道订阅,用于订阅某一特定的频道
PSUBSCRIBE 也叫模式订阅,用于订阅某一组频道,使用glob的方式,比如xxx-*可以匹配xxx-a,和xxx-b,xxx-ddd等等

订阅频道: pubsub_channels

SUBSCRIBE_redis

关联操作:

如果已经存在订阅者,则添加到链表的尾部
如果没有订阅者,那么创建频道,然后添加订阅者

删除操作:

找到对应的链表,进行删除
如果删除后,链表为空,则删除频道

模式订阅: pubsub_patterns

client-7订阅music.*
client-8订阅book.*
client-9订阅news.*

SUBSCRIBE_redis 

订阅模式:

新建一个pubsubPattern结构
添加到链表的尾部

退订模式:

查找相应的pubsubPattern然后删除

发送消息:

将消息发送给channel频道的所有订阅者
遍历整个pubsub_patterns表,查找匹配的模式,如果有一个或者多个模式与频道匹配,将消息发送给pattern模式的订阅者

相关命令:

查看所有的频道:PUBSUB CHANNELS
查询订阅者的数量:PUBSUB NUMSUB
查询服务器被订阅者的数量:PUBSUB NUMPAT

相关文章

相关文章

赶快留言冒泡

  • 评论 (0)
  • 引用通告 (0)
目前还没有任何评论.
目前还没有任何Trackbacks和Pingbacks.
吐个泡浮上去.