一 订阅的数据结构
struct redisServer { //... dict *pubsub_channels; // .. }
该数据结构就是hashtable加上链表
每当客户端发送SUBSCRIBE命令分为两种情况
1 该channel已经存在了,那么就把新的客户端加到链表的尾节点
2 如果channel不存在,就现在hashmap里加入一个新的key-value对,
退订模式与订阅模式正相反,找到字典对应的链表找到元素对其进行删除,然后判断链表是否为空,如果为空说明这个频道已经没人订阅了,就在hashtable中删除这个key