1. 程式人生 > 實用技巧 >Redis之釋出訂閱

Redis之釋出訂閱

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

使用場景

聊天室、 公告牌、 服務之間利用訊息解耦都可以使用釋出訂閱模式。