Redis 發布與訂閱 命令

2022-04-29 09:45:10 字數 2273 閱讀 4555

該筆記記錄redis 發布與訂閱的命令。

1.publish

可用版本: >=2.0.0

時間複雜度: o(n+m),其中 n 是頻道 channel 的訂閱者數量,而 m 則是使用模式訂閱(subscribed patterns)的客戶端的數量。

命令格式: publish channel message

作用:將訊息message傳送到指定的頻道channel。

返回值:

接收到message的訂閱者數量。

2.subscribe

可用版本: >=2.0.0

時間複雜度: o(n),n為訂閱的頻道數量

命令格式: subscribe channel [channel ...]

作用:訂閱給定的乙個或者多個頻道的資訊。

返回值:

接收到的資訊。

3.psubscribe

可用版本: >=2.0.0

時間複雜度: o(n),n為訂閱的模式數量

命令格式: psubscribe pattern [pattern ...]

作用:訂閱乙個或多個符合給定模式的頻道。

每個模式以 * 作為匹配符,比如 it* 匹配所有以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類。

返回值:

接收到的資訊。

4.unsubscribe

可用版本: >=1.0.0

時間複雜度: o(n),n是客戶端已訂閱的頻道數量

命令格式: unsubscribe channel [channel ...]

作用:指示客戶端退訂給定的頻道。

如果沒有頻道被指定,也即是,乙個無引數的 unsubscribe 呼叫被執行,那麼客戶端使用 subscribe 命令訂閱的所有頻道都會被退訂。在這種情況下,命令會返回乙個資訊,告知客戶端所有被退訂的頻道。

返回值:

據說在不同客戶端會有不同的表現。

5.punsubscribe

可用版本: >=2.0.0

時間複雜度: o(n+m) ,其中 n 是客戶端已訂閱的模式的數量, m 則是系統中所有客戶端訂閱的模式的數量。

命令格式: punsubscribe pattern [pattern …]

作用:指示客戶端退訂所有給定模式。

如果沒有模式被指定,也即是,乙個無引數的 punsubscribe 呼叫被執行,那麼客戶端使用 psubscribe pattern [pattern …] 命令訂閱的所有模式都會被退訂。在這種情況下,命令會返回乙個資訊,告知客戶端所有被退訂的模式。

返回值:

據說在不同客戶端會有不同的表現。

6.pubsub

命令格式: pubsub [argument [argument ...]]

可用版本: >=2.8.0

注意: 該命令有3種不同用法,拆分記錄!!!

1)時間複雜度: o(n) , n 為活躍頻道的數量

命令格式: pubsub channels [pattern]

作用:列出當前的活躍頻道。

活躍頻道指的是那些至少有乙個訂閱者的頻道, 訂閱模式的客戶端不計算在內。

返回值:

乙個由活躍頻道組成的列表。

其它:pattern 引數是可選的:

如果不給出 pattern 引數,那麼列出訂閱與發布系統中的所有活躍頻道。

如果給出 pattern 引數,那麼只列出和給定模式 pattern 相匹配的那些活躍頻道。

2)時間複雜度: o(n) , n 為給定頻道的數量

命令格式: pubsub numsub [channel-1 ... channel-n]

作用:批量回覆。

返回值:

乙個多條批量回覆(multi-bulk reply),回覆中包含給定的頻道,以及頻道的訂閱者數量。 格式為:頻道 channel-1 , channel-1 的訂閱者數量,頻道 channel-2 , channel-2 的訂閱者數量,諸如此類。 回覆中頻道的排列順序和執行命令時給定頻道的排列順序一致。 不給定任何頻道而直接呼叫這個命令也是可以的, 在這種情況下, 命令只返回乙個空列表。

3)時間複雜度: o(1)

命令格式: pubsub numpat

作用:獲取訂閱模式的數量

返回值:

乙個整數回覆(integer reply)

其它:這個命令返回的不是訂閱模式的客戶端的數量, 而是客戶端訂閱的所有模式的數量總和。

Redis命令 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...

Redis 發布與訂閱

redis 自從2.0版本後,增加發布與訂閱等新特性,該功能有點類似設計模式中的觀察者模式,對訊息的生產者與接收者進行松耦合。也可以用該特性實現系統與系統之間的訊息傳遞,該功能的 的實現非常實用和高效。下面我們介紹一下,如何使用發布與訂閱 redis提供發布與訂閱幾個命令 subscribe cha...

redis發布與訂閱

redis在2.8.0版本之後出了乙個新功能,叫pub sub,也叫 發布與訂閱 在這篇文章中不僅要介紹它是如何用的,更重要的是要介紹它的應用場景。在之前介紹websocket之用tubesock在rails實現聊天室 五 的時候,就用redis的pub sub實現過聊天室。相關的 是這樣的 red...