(Redis设计与实现-6) 频道的订阅与退订
生活随笔
收集整理的這篇文章主要介紹了
(Redis设计与实现-6) 频道的订阅与退订
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.訂閱頻道
每當客戶端執行 SUBSCRIBE 命令,訂閱某個或某些頻道的時候,服務器都會將客戶端與被訂閱的頻道在 redisServer.pubsub_channels 字典中進行關聯。a.如果頻道已經有其他訂閱者, 那么它在 pubsub_channels 字典中必然有相應的訂閱者鏈表, 程序唯一要做的就是將 客戶端添加到訂閱者鏈表的末尾。b.如果頻道還未有任何訂閱者, 那么它必然不存在于 pubsub_channels 字典, 程序首先要在 pubsub_channels 字典中 為頻道創建一個鍵, 并將這個鍵的值設置為空鏈表, 然后再將客戶端添加到鏈表, 成為鏈表的第一個元素。
二.退訂頻道
UNSUBSCRIBE 命令的行為和 SUBSCRIBE 命令的行為正好相反,當一個客戶端退訂某個或某些頻道的時候,服務器將從 redisServer.pubsub_channels 中解除客戶端與被退訂頻道之間的關聯
a.程序會根據被退訂頻道的名字,在 pubsub_channels 字典中找到頻道對應的訂閱者鏈表,然后從訂閱者鏈表中刪除 退訂客戶端的信息。b.如果刪除退訂客戶端之后,頻道的訂閱者鏈表變成了空鏈表,那么說明這個頻道已經沒有任何訂閱者了,程序將從 pubsub_channels 字典中刪除頻道對應的鍵。 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的(Redis设计与实现-6) 频道的订阅与退订的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终端报错xcrun: error: un
- 下一篇: mysql的分库分表