Redis學習筆記 發布訂閱

2021-10-06 18:41:51 字數 2396 閱讀 5042

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 當有新訊息通過 ...