redis 二 發布訂閱

2021-10-06 23:53:10 字數 2772 閱讀 5619

參考資料:

redis 4.x cookbook 中文版;

redis官方文件

注:本文redis的版本為: 5.0.3

注意,如果先發布訊息,然而頻道沒有訂閱者,這時的訊息會被丟失;

redis的發布訂閱是乙個訊息推送的機制;

發布者(publisher)向指定頻道(channel)發布訊息(message);

頻道(channel)向訂閱者(subscriber)推送(deliver)訊息;

有很多專門做訊息推送的中介軟體,比redis的發布訂閱要好很多;但是當你的系統需要快速實現簡單的訊息推送功能的話,redis的發布訂閱還是能滿足需求的;

最基礎的操作:訂閱乙個頻道和向頻道傳送訊息;

#訂閱

127.0.0.1:6379> subscribe testpubsub_1

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

1)"subscribe"

2)"testpubsub_1"

3)(integer) 1

1)"message"

2)"testpubsub_1"

3)"this is new message"

#發布127.0.0.1:6379> publish testpubsub_1 "this is new message"

(integer) 1

psubscribe 正規表示式1 正規表示式2 … 批量訂閱匹配上正規表示式的所有頻道;

值得注意的是,如果訂閱時正規表示式沒有匹配到頻道,在後續如果發布到某個新頻道時匹配上了正則,也會推送訊息;

#訂閱

127.0.0.1:6379> psubscribe a*

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

1)"psubscribe"

2)"a*"

3)(integer) 1

1)"pmessage"

2)"a*"

3)"abc*"

4)"1"

1)"pmessage"

2)"a*"

3)"ab"

4)"1"

#發布127.0.0.1:6379> publish abc* "1"

(integer) 1

127.0.0.1:6379> publish ab "1"

(integer) 1

unsubscribe [channel [channel …]]

取消訂閱頻道;支援批量(需提供準確頻道名稱);

punsubscribe [pattern [pattern …]]

通過正則匹配,批量取消訂閱;

pubsub channels [pattern]

獲取正在活躍的頻道(至少有乙個客戶端在訂閱);如果有將會返回頻道名稱;

注意!!!使用psubscribe命令訂閱不會被統計到;

pubsub numsub [channel-1 … channel-n]

統計指定頻道的訂閱者數量;

127.0.0.1:6379> pubsub numsub ab abc*

1)"ab"

2)(integer) 1

3)"abc*"

4)(integer) 0

pubsub numpat

#訂閱1

127.0.0.1:6379> psubscribe ab

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

1)"psubscribe"

2)"ab"

3)(integer) 1

#訂閱2

127.0.0.1:6379> psubscribe a*

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

1)"psubscribe"

2)"a*"

3)(integer) 1

#獲取當前發布訂閱系統中,有幾種訂閱方式;

#通俗一點:統計所有psubscribe命令中的正規表示式總數;

#注意這裡統計不是根據正規表示式字串來做去重統計,而是不去重的全統計;

127.0.0.1:6379> pubsub numpat

(integer) 2

#再新開乙個訂閱

127.0.0.1:6379> psubscribe a*

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

1)"psubscribe"

2)"a*"

3)(integer) 1

#再統計一次

127.0.0.1:6379> pubsub numpat

(integer) 3

Redis七(發布訂閱)

redis 通過 publish subscribe 等命令實現了訂閱與發布模式,這個功能提供兩種資訊機制,分別是訂閱 發布到頻道和訂閱 發布到模式 訂閱者可以訂閱乙個或多個頻道,發布者向乙個頻道傳送訊息後,所有訂閱這個頻道的訂閱者都將收到訊息,而發布者也將收到乙個數值,這個數值是收到訊息的訂閱者的...

Redis學習 4 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。當有新訊息通過 publish 命令傳送給頻道 channel1 時,這個訊息就會被傳送給訂閱它的三個客戶端 訂閱乙個或多個符合給定模式的頻道。pu...

Redis教程09 發布和訂閱

redis教程08 zset有序集合介紹 redis教程07 set集合介紹 redis教程06 list型別命令介紹 redis教程05 hash型別命令介紹 redis教程04 string型別之bit redis教程03 string介紹 redis 發布訂閱 pub sub 是一種訊息通訊模...