Redis的頻道發布與消息訂閱


Redis的頻道發布與消息訂閱

 

官網介紹

進程間的一種通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息。

 

訂閱/發布消息圖

下圖展示了頻道channel1,以及訂閱這個頻道的三個客戶端-client2client5client1

 

 

當有新消息通過PUBLISH命令發送給頻道channel1時,這個消息就會被發送給訂閱它的三個客戶端。

 

 

Redis 發布訂閱命令

PSUBSCRIBE pattern [pattern ...]

訂閱一個或者多個符合模式匹配的頻道

【假設客戶端同時訂閱了某種模式和符合該模式的某個頻道,那么發送給這個頻道的消息將被客戶端接收到兩次,只不過這兩條消息的類型不同,一個是message類型,一個是pmessage類型,但其內容相同。 】

 

PUBSUB subcommand [argument [argument ...]]

返回由活躍頻道組成的列表,即可以查詢訂閱與發布系統的狀態

 

PUBLISH channel message 

發送消息到指定的頻道

【其返回值為接收到該消息的訂閱者的數量】

 

SUBSCRIBE channel [channel ...] 

訂閱一個或多個頻道

【其返回值包括客戶端訂閱的頻道,目前已訂閱的頻道數量,以及接收到的消息,其中subscribe表示已經成功訂閱了某個頻道】

 

PUNSUBSCRIBE [pattern [pattern ...]] 

退訂所有符合模式匹配的頻道

 

UNSUBSCRIBE [channel [channel ...]] 

退訂一個或多個頻道

【Redis采用UNSUBSCRIBE和PUNSUBSCRIBE命令取消訂閱,其返回值與訂閱類似。 
由於Redis的訂閱操作是阻塞式的,因此一旦客戶端訂閱了某個頻道或模式,就將會一直處於訂閱狀態直到退出。

在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,

其返回值都包含了該客戶端當前訂閱的頻道和模式的數量,當這個數量變為0時,該客戶端會自動退出訂閱狀態。】

 

 簡單練習

客戶端先訂閱后,消息發布后才能接收到消息

  1. 可以一次性訂閱多個,SUBSCRIBE c1 c2 c3
  2. 消息發布,PUBLISH c2 hell0-redis
  3. 訂閱多個,通配符*PSUBSCRIBE new*
  4. 收取消息,PUBLISH new1 redis2019

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM