Redis之釋出訂閱
阿新 • • 發佈:2020-11-18
Redis提供了基於“釋出/訂閱”模式的訊息機制,此種模式下,訊息釋出者和訂閱者不進行直接通訊, 釋出者客戶端向指定的頻道(channel) 釋出訊息, 訂閱該頻道的每個客戶端都可以收到該訊息,如下圖所示。
常用命令:
釋出訊息 publish channel message 示例: 127.0.0.1:6379> publish channel:sports "Tim won the championship" (integer) 0 向channel:sports頻道釋出一條訊息“Tim won the championship”, 返回結果為訂閱者個數, 因為此時沒有訂閱, 所以返回結果為0。 訂閱訊息 subscribe channel [channel ...] 訂閱者可以訂閱一個或多個頻道。 有關訂閱命令有兩點需要注意: ·客戶端在執行訂閱命令之後進入了訂閱狀態, 只能接收subscribe、psubscribe、 unsubscribe、 punsubscribe的四個命令。 ·新開啟的訂閱客戶端, 無法收到該頻道之前的訊息, 因為Redis不會對釋出的訊息進行持久化。 取消訂閱 unsubscribe [channel [channel ...]] 按照模式訂閱和取消訂閱 psubscribe pattern [pattern...] punsubscribe [pattern [pattern ...]] 示例: 訂閱以it開頭的所有頻道127.0.0.1:6379> psubscribe it* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "it*" 3) (integer) 1 查詢訂閱 檢視活躍的頻道(所謂活躍的頻道是指當前頻道至少有一個訂閱者) pubsub channels [pattern] 示例: 127.0.0.1:6379> pubsub channels 1) "channel:sports" 2) "channel:it" 3) "channel:travel" 127.0.0.1:6379> pubsub channels channel:*r* 1) "channel:sports" 2) "channel:travel" 檢視頻道訂閱數 pubsub numsub [channel ...] 檢視模式訂閱數 pubsub numpat
使用場景
聊天室、 公告牌、 服務之間利用訊息解耦都可以使用釋出訂閱模式。