- Redis發布訂閱簡介
(1) 定義:Redis發布訂閱(pub/sub)是一種消息通訊模式:發送者發送消息,訂閱者接受信息
(2) 具體操作:Redis的SUBSCRIBE命令可以讓客戶端訂閱任意數量的頻道,每當有新信息發送到被訂閱的頻道時,信息就會被發送給所有訂閱指定頻道的客戶端
(3) 實例
下圖展示了頻道channel1,以及訂閱該頻道的客戶端----client2、client5、client1之間的關系
當有新消息通過PUBLISH發送給頻道channel1時,這個消息就會被發送給訂閱它的三個客戶端:
- 發布/訂閱使用
(1) 發布訂閱模式
① 基於頻道(channel)的發布/訂閱
1) 發布/訂閱模式包含兩種角色,分別是發布者和訂閱者。發布者可以向指定的頻道發送消息;訂閱者可以訂閱一個或者多個頻道,所有訂閱此頻道的訂閱者都會收到此消息
2) 圖示
② 基於模式(pattern)的發布/訂閱
- 基於頻道(channel)的發布/訂閱是如何實現的?
(1) 底層是通過字典(圖中的publish_channel)實現的,這個字典就用於保存訂閱頻道的信息:字典的鍵為正在被訂閱的頻道,而字典的值則是一個鏈表,鏈表中保存了所有訂閱這個頻道的客戶端。
(2) 數據結構
① 實例:在下圖展示的這個pubsub_channels的示例中,client2、client5、client1就訂閱了channel1,而其他頻道也被別的客戶端所訂閱
② 圖示
(3) 訂閱