redis提供了基於「發布/訂閱」模式的訊息機制,此種模式下,訊息發布者和訂閱者不進行直接通訊,發布者客戶端向指定的頻道(channel)發布訊息,訂閱該頻道的每個客戶端都可以收到該訊息
和很多專業的訊息佇列系統(例如kafka、rocketmq)相比,redis的發布訂閱略顯粗糙,例如無法實現訊息堆積和回溯。但勝在足夠簡單,如果當前場景可以容忍的這些缺點,也不失為乙個不錯的選擇
redis主要提供了發布訊息、訂閱頻道、取消訂閱以及按照模式訂閱和取消訂閱等命令;
發布訊息
publish channel message
發布一條"channel:sports"體育頻道訊息"james in los angeles"
127.0.0.1:6379> publish channel:sports "james in los angeles"
(integer) 0
訂閱訊息subscribe channel [channel ...]
訂閱訊息可以訂閱多條訊息
訂閱這個體育頻道
127.0.0.1:6379> subscribe channel:sports
reading messages... (press ctrl-c to quit)
1)"subscribe"
2)"channel:sports"
3)(integer) 1
此時新開乙個客戶端往這個頻道發布一條訊息
127.0.0.1:6379> publish channel:sports "harden in houston"
(integer) 1
這時候這個訂閱者會受到剛剛發布訊息的推送
127.0.0.1:6379> subscribe channel:sports
reading messages... (press ctrl-c to quit)
1)"subscribe"
2)"channel:sports"
3)(integer) 1
1)"message"
2)"channel:sports"
3)"harden in houston"
取消訂閱unsubscribe channel [channel ...]
取消訂閱體育頻道
127.0.0.1:6379> unsubscribe channel:sports
1)"unsubscribe"
2)"channel:sports"
3)(integer) 0
按照模式訂閱和取消訂閱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
查詢訂閱
1.檢視活躍的頻道
pubsub channels [pattern]
所謂活躍指的是最少有乙個人訂閱,其中[pattern]是可以指定具體的模式
127.0.0.1:6379> pubsub channels
1)"channel:sports"
2.檢視頻道訂閱數
pubsub numsub [channel ...]
查詢channel:sports頻道訂閱數是1個
127.0.0.1:6379> pubsub numsub channel:sports
1)"channel:sports"
2)(integer) 1
3.檢視模式訂閱數
pubsub numpat
當前通過模式訂閱的有1個客戶端
127.0.0.1:6379> pubsub numpat
(integer) 1
redis學習筆記 發布和訂閱
除了任務佇列以外,redis還有一種基於 發布 訂閱 模式的訊息傳遞,它能讓訊息在多個頻道以及多個客戶端之間進行訊息傳遞。向頻道發布訊息使用命令publish channel message redis publish chan1 hello integer 0訊息傳送成功後,將會返回乙個整數,表示...
Redis 發布訂閱
redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...
Redis 發布訂閱
redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 publish 傳送訊息,訂閱者 subscribe 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖是 頻道 channel1 以及訂閱這個頻道的三個客戶端 client1 client2和 client3 當有新訊息通過 ...