掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

消息多播:生產(chǎn)者生產(chǎn)一次消息,中間件負責將消息復(fù)制到多個消息隊列中,每個消息隊列由相應(yīng)的消費組進行消費,這是分布式系統(tǒng)常用的一種解耦方式。
下面的示例演示了“發(fā)布/訂閱者”模式的工作流程,示意圖如下所示:
首先打開 Redis 客戶端,然后訂閱了一個名為“www.biancheng.net”的 channel,使用如下命令:
#訂閱channel 127.0.0.1:6379> SUBSCRIBE www.biancheng.net Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "www.biancheng.net" 3) (integer) 1
上述示例使用
SUBSCRIBE命令訂閱了名為 www.biancheng.net 的 channel。命令執(zhí)行后該客戶端會出處于等待接收消息的阻塞狀態(tài)。
下面再啟動一個 Redis 客戶端,輸入如下命令:
127.0.0.1:6379> PUBLISH www.biancheng.net "this is website" (integer) 1 127.0.0.1:6379> PUBLISH www.biancheng.net "hello world" (integer) 1 127.0.0.1:6379> PUBLISH www.biancheng.net "how are you" (integer) 1
通過上述PUBLISH命令發(fā)布了三條信息?,F(xiàn)在兩個客戶端在處于同一個名為“www.biancheng.net”的頻道上,前者負責接收消息,后者負責發(fā)布消息。
完成了上述操作后,您會在接收消息的客戶端得到如下輸出結(jié)果:
127.0.0.1:6379> SUBSCRIBE www.biancheng.net Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "www.biancheng.net" 3) (integer) 1 1) "message" 2) "www.biancheng.net" 3) "this is website" 1) "message" 2) "www.biancheng.net" 3) "hello world" 1) "message" 2) "www.biancheng.net" 3) "how are you"
| 命令 | 說明 |
|---|---|
| PSUBSCRIBE pattern [pattern ...] | 訂閱一個或多個符合指定模式的頻道。 |
| PUBSUB subcommand [argument [argument ...]] | 查看發(fā)布/訂閱系統(tǒng)狀態(tài),可選參數(shù) 1) channel 返回在線狀態(tài)的頻道。 2) numpat 返回指定模式的訂閱者數(shù)量。 3) numsub 返回指定頻道的訂閱者數(shù)量。 |
| PUBSUB subcommand [argument [argument ...]] | 將信息發(fā)送到指定的頻道。 |
| PUNSUBSCRIBE [pattern [pattern ...]] | 退訂所有指定模式的頻道。 |
| SUBSCRIBE channel [channel ...] | 訂閱一個或者多個頻道的消息。 |
| UNSUBSCRIBE [channel [channel ...]] | 退訂指定的頻道。 |
下面對上述常用命令做演示:
#訂閱指定模式的頻道,*代表通配符,會匹配所有www開頭的頻道 127.0.0.1:6379> PSUBSCRIBE www* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "www*" 3) (integer) 1 #按ctrl+c退出阻塞狀態(tài) ^C C:\Users\Administrator>redis-cli #查看發(fā)布訂閱系統(tǒng)狀態(tài),返回相應(yīng)的頻道 127.0.0.1:6379> PUBSUB channels 1) "www.biancheng.net" #退訂指定模式的頻道 127.0.0.1:6379> PUNSUBSCRIBE www* 1) "punsubscribe" 2) "www*" 3) (integer) 0 #退訂指定頻道 127.0.0.1:6379> UNSUBSCRIBE www.biancheng.net 1) "unsubscribe" 2) "www.biancheng.net" 3) (integer) 0

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流