《Redis讀書筆記》發布與訂閱

2021-10-04 21:22:00 字數 943 閱讀 1257

在軟體架構中,發布訂閱是一種訊息正規化,訊息的傳送者(稱為發布者)不會將訊息直接傳送給特定的接收者(稱為訂閱者)。而是將發布的訊息分為不同的類別,無需了解哪些訂閱者(如果有的話)可能存在。同樣的,訂閱者可以表達對乙個或多個類別的興趣,只接收感興趣的訊息,無需了解哪些發布者(如果有的話)存在。

redis的發布與訂閱功能由publish、subscribe、psubscribe等命令組成。

subscribe 訂閱訊息

subscribe "new.it"
publish 發布訊息

publish "new.id" "hello"
語法就是publish topic datapsubscribe(pattern-matching subscriptions) 訂閱乙個頻道或者多個模式

redis將所有頻道的訂閱關係都儲存在伺服器狀態的pubsub_channels字典裡面,這個字典的鍵是某個被訂閱的頻道,而鍵的值則是乙個鍊錶,鍊錶裡面記錄了所有訂閱這個頻道的客戶端。如下所示

類似於hashmap的儲存方式

模式訂閱的方式

伺服器使用pubsub_patterns鍊錶儲存了所有模式的訂閱關係;使用單個鍊錶儲存的,具體類似於如下

Redis 發布與訂閱

redis 自從2.0版本後,增加發布與訂閱等新特性,該功能有點類似設計模式中的觀察者模式,對訊息的生產者與接收者進行松耦合。也可以用該特性實現系統與系統之間的訊息傳遞,該功能的 的實現非常實用和高效。下面我們介紹一下,如何使用發布與訂閱 redis提供發布與訂閱幾個命令 subscribe cha...

redis發布與訂閱

redis在2.8.0版本之後出了乙個新功能,叫pub sub,也叫 發布與訂閱 在這篇文章中不僅要介紹它是如何用的,更重要的是要介紹它的應用場景。在之前介紹websocket之用tubesock在rails實現聊天室 五 的時候,就用redis的pub sub實現過聊天室。相關的 是這樣的 red...

Redis發布與訂閱

訂閱 發布訊息圖 第乙個 訊息傳送者,第二個 頻道 第三個 訊息訂閱者!下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 publish 命令傳送給頻道 channel1 時,這個訊息就會被傳送給訂閱它的三...