Redis 發布 訂閱

2022-01-21 19:19:17 字數 1890 閱讀 6470

redis 客戶端可以訂閱任意數量的頻道。

訂閱/發布訊息圖:

第乙個:訊息傳送者, 第二個:頻道 第三個:訊息訂閱者!

下圖展示了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的 關係:

當有新訊息通過 publish 命令傳送給頻道 channel1 時, 這個訊息就會被傳送給訂閱它的三個客戶端:

這些命令被廣泛用於構建即時通訊應用,比如網路聊天室(chatroom)和實時廣播、實時提醒等。

訂閱端

127.0.0.1:6379> subscribe cyan    #

訂閱乙個頻道 cyan

reading messages... (press ctrl-c to quit)

1) "subscribe"

2) "cyan"

3) (integer) 1

#等待讀取推送的資訊

1) "message"      #

訊息2) "cyan"        #

哪個頻道的訊息

3) "hello,cyan"    #

訊息的具體內容

1) "message"

2) "cyan"

3) "hello,redis"

發布端

127.0.0.1:6379> publish cyan "hello,cyan" #

發布者發布訊息到頻道!

(integer) 1

127.0.0.1:6379> publish cyan "hello,redis" #

發布者發布訊息到頻道!

(integer) 1

127.0.0.1:6379>

每個 redis 伺服器程序都維持著乙個表示伺服器狀態的 redis.h/redisserver 結構,結構的 pubsub_channels 屬性是以個字典,這個字典就用於儲存訂閱頻道的資訊:

struct redisservice
其中,字典的鍵為正在被訂閱的頻道,而字典的值則是乙個鍊錶,鍊錶中儲存了所有訂閱這個頻道的客戶端。

比如說,在下圖展示的這個 pubsub_channels 示例中,client2、client5 和 client1 就訂閱了 client1,而其他頻道也分別被其他客戶端所訂閱:

當客戶端呼叫 subscribe 命令是,程式就會將客戶端和要訂閱的頻道在 pubsub_channels 字典中關聯起來。

舉個例子,如果客戶端 client10086 執行命令 subscribe channel1 channel2 channel3,那麼前面展示的 pubsub_channels 將變成下面這樣

1、實時訊息系統!

2、實時聊天!(頻道當做聊天室,將資訊回顯給所有人即可!)

3、訂閱,關注系統都是可以的! 稍微複雜的場景我們就會使用 訊息中介軟體 mq

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 publish 傳送訊息,訂閱者 subscribe 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖是 頻道 channel1 以及訂閱這個頻道的三個客戶端 client1 client2和 client3 當有新訊息通過 ...

Redis發布訂閱

概述 redis發布訂閱 pub sub 是種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 訂閱訊息。redis客戶端可以訂閱任意數量的頻道。下圖展示了頻道channel以及訂閱它的三個客戶端 client2 client5和client1之間的關係 當有新的訊息publish到chann...