Redis發布與訂閱功能

2021-08-11 12:33:45 字數 1387 閱讀 5606

發布/訂閱」功能包含兩種角色:發布者和訂閱者。

redis的發布與訂閱功能由publish、subscribe、psubscribe等命令組成。通過執行publish命令可以發布訊息;通過執行subscribe命令,客戶端可以訂閱乙個或多個頻道;通過執行psubscribe命令,客戶端可以訂閱乙個或多個模式。

一、發布與訂閱頻道

如圖所示,頻道的發布與訂閱功能。客戶端a、b、c都訂閱了news.it頻道,此時如果向news.it頻道傳送訊息,客戶端a、b、c都會收到這條訊息。

在redis.h/redisserver結構中可以看到所有頻道的訂閱關係都儲存在伺服器狀態的訂閱頻道字典裡,這個字典的鍵是被訂閱的頻道,值則是訂閱該頻道的客戶端列表。

當redis客戶端執行publish 命令將訊息傳送給頻道時,publish命令在pubsub_channels字典裡找到頻道channel的訂閱者名單,然後將訊息傳送給名單上的所有客戶端。

二、發布與訂閱模式

如圖所示,頻道的發布與訂閱功能。客戶端a訂閱了頻道news.it,客戶端b訂閱了new.et,客戶端c、c訂閱了news.[ie]t模式,此時如果向news.it頻道傳送訊息,客戶端a、c、d都會收到這條訊息。

redis將所有模式的訂閱關係都儲存在伺服器狀態的訂閱模式煉表裡,鍊錶的每個節點都包含著客戶端及客戶端訂閱的模式。

當redis客戶端執行publish 命令將訊息傳送給頻道時,redis首先將訊息message傳送給頻道channel的訂閱者,然後遍歷事個pubsub_patterns鍊錶,查詢與channel頻道匹配的模式,並將訊息傳送給訂閱了這些模式的客戶端。

參考資料

1、2、《redis設計與實現》第二版---黃健巨集

3、4、

Redis 發布訂閱功能

在redis中發布訂閱功能是由publish subscribe unsubscribe psubscribe組成的。publish是發布,subscribe是訂閱,unsubscribe是取消訂閱,psubscribe是訂閱模式,所謂模式也就是可以對應多個頻道的 頻道 例如訂閱了 abc hell...

redis發布訂閱功能介紹

redis的發布訂閱功能 publish subscribe 頻道 訊息佇列 subscribe 訂閱乙個或多個佇列 help subscribe 檢視subscribe幫助 例 訂閱news頻道 subscribe news 注 可以同時訂閱多個頻道 publish 向頻道中發訊息 例 向news...

Redis擴充套件功能之發布與訂閱

發布與訂閱這個模式在zookeeper中有詳細的闡述以及zookeeper是如何實現該功能的 參考zookeeper應用之一 資料發布與訂閱初體驗 池塘裡洗澡的鴨子 cnblogs.com 和zookeeper 隨筆分類 池塘裡洗澡的鴨子 cnblogs.com redis同樣實現了該功能,下面 r...