快速入門Redis訂閱發佈(Pub/Sub)

介紹

Redis訂閱發佈模型比較簡單,結構以下:redis

訂閱發佈模型

消息通道(channel)做爲消息中轉站,它不關心消息的發佈者(publisher)是誰,也不關心訂閱者(subscriber)有沒有成功的消費掉消息。publisher負責發送消息,subscriber負責接收消息。shell

命令介紹

Redis訂閱發佈核心的兩個命令就是: SUBSCRIBEPUBLISH服務器

顧名思義,SUBSCRIBE 就是訂閱消息,PUBLISH 就是發佈消息。ui

Tips:訂閱消息會阻塞鏈接,一旦開啓訂閱就不能執行其餘的命令(訂閱發佈命令除外)。code

訂閱消息(SUBSCRIBE)

SUBSCRIBE channel [channel...]

channel 表示消息通道。消息通道能夠是一個,也能夠是多個,多個消息通道之間用空格隔開。一個消息通道同時能夠被多個客戶端訂閱,消息通道對於客戶端來講是共享的,非獨享。圖片

打開終端,鏈接到Redis服務器:ip

weis-MacBook-Pro:~ weihan$ redis-cli 
127.0.0.1:6379>

接着輸入以下命令,訂閱消息通道 chatroomit

127.0.0.1:6379> subscribe chatroom
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chatroom"
3) (integer) 1

出現上面顯示就表示已成功訂閱消息通道 chatroom 的消息,數字1表示鏈接成功。此時能夠看到當前鏈接處在阻塞狀態,能夠按 Ctrl + C 鍵退出訂閱狀態。class

發佈消息(PUBLISH)

PUBLISH channel message

channel 表示消息通道監控

message 表示待發布的消息內容

從新打開一個終端,鏈接到Redis服務器,並輸入下面命令:

127.0.0.1:6379> publish chatroom "Hi"
(integer) 1

上面的命令表示向消息通道 chatroom 中發佈一條 Hi 的文本消息。數字1表示成功收到消息的訂閱者數量。

接着切換到剛剛訂閱消息的終端,能夠看到下面消息:

127.0.0.1:6379> subscribe chatroom
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chatroom"
3) (integer) 1
1) "message"
2) "chatroom"
3) "Hi"

此時咱們已經收到了剛剛發佈的消息,消息內容爲 Hi

怎麼樣,是否是很簡單?

除了 SUBSCRIBEPUBLISH兩個命令外,Redis還爲咱們提供了一些列的監控命令:

查詢消息通道(PUBSUB CHANNELS)

PUBSUB CHANNELS [pattern]

pattern 表示匹配規則,此參數爲選填,若不指定匹配規則,則默認查詢全部激活狀態的消息通道。

激活狀態的消息通道:至少存在一個訂閱者的消息通道纔算是激活狀態的消息通道

在發佈消息的終端,輸入以下命令:

127.0.0.1:6379> pubsub channels
1) "chatroom"

能夠看到已經查詢出咱們剛剛建立的消息通道 chatroom

查詢消息通道訂閱者數量(PUBSUB NUMSUB)

PUBSUB NUMSUB [channel...]

channel:消息通道名稱,

在發佈消息的終端,輸入以下命令:

127.0.0.1:6379> pubsub numsub chatroom
1) "chatroom"
2) (integer) 1

數字1表示消息通道 chatroom 的訂閱者數量爲1個

相關文章
相關標籤/搜索