Redis之订阅是怎么实现的

一 订阅的数据结构

struct redisServer {

  //...

  dict *pubsub_channels;

  // ..

  }

  

  该数据结构就是hashtable加上链表

  每当客户端发送SUBSCRIBE命令分为两种情况

  1 该channel已经存在了,那么就把新的客户端加到链表的尾节点

  2 如果channel不存在,就现在hashmap里加入一个新的key-value对,

  

  

  退订模式与订阅模式正相反,找到字典对应的链表找到元素对其进行删除,然后判断链表是否为空,如果为空说明这个频道已经没人订阅了,就在hashtable中删除这个key

  

posted on 2021-01-24 08:39  MaXianZhe  阅读(97)  评论(0编辑  收藏  举报

导航