Redis 發佈訂閱

 

Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。redis

pub即publish,推送。服務器

sub即subscribe,訂閱。微信

 

 

訂閱者訂閱某個channel(頻道),發佈者將消息發佈到Redis服務器,Redis服務器將消息推送給這個頻道的訂閱者。spa

channel  管道、通道、頻道。code

 

 

 

Redis的channel是公共頻道,誰均可以發佈消息。blog

就像微信羣、QQ羣,誰均可以發送消息,羣成員(訂閱者)都會收到消息。教程

 

Redis的消息是在線即時消息,相似於廣播,只有在線的訂閱者(鏈接到Redis服務器的訂閱者),纔會收到消息。class

若當時不在線,並不會收到消息。後面登錄了(鏈接到服務器),服務器也不會推送以前(這個客戶端未收到)的消息。服務器只推送一遍。cli

 

 

 

 

使用示例

一、啓動一個客戶端,鏈接到服務器

 redis-cli -a password 書籍

 

二、訂閱頻道

 subscribe channel1 channel2 .....     //可訂閱一個或多個頻道

 

 

會顯示訂閱的頻道的信息,一個頻道顯示3個條目:

(1)"subscribe"      //固定的值,表示這是一個訂閱頻道

(2)訂閱的頻道名

(3)一個int型的數,表示這個頻道是當前客戶端訂閱的第幾個頻道

 

訂閱以後,當前命令提示符會阻塞,只能接收Redis服務器推送的消息,不能再執行命令。因此咱們再啓動一個客戶端推送消息。

 

三、在另外一個Redis客戶端推送消息

 publish channel message    //channel指定要推送消息到哪一個頻道,message是要推送的消息

返回當前接收到消息的訂閱者的數量。1表示只有一個訂閱者收到了這條消息。

 

咱們看到另外一個客戶端已接收到消息。一條消息顯示3個項:

(1)「message」   //固定值,表示這是一條消息

(2)這條消息來自哪一個訂閱頻道

(3)消息內容

 

 

Redis的訂閱是臨時訂閱,只在本次鏈接期間有效。斷開鏈接後,會清除這個客戶端的訂閱信息,即取消全部訂閱的頻道。

 

誰均可以是發佈者,誰均可以發送消息。能夠向任何頻道發送消息。

 

 

 

 

相關命令

一、subscribe  channel1  channel2  ......      //訂閱一個或多個頻道

 

二、unsubscribe  channel1  channel2  .......    //退訂一個或多個頻道。多了un

 

 

三、psubscribe  pattern1  pattern2  .....     //多了一個p,即pattern,訂閱該模式匹配的全部頻道,能夠有多個匹配模式。

示例:

 psubscribe tv     //訂閱頻道tv

 psubscribe *home    //訂閱全部以home結尾的頻道

 psubscribe china*    //訂閱全部以china開頭的頻道

 

四、punsubscribe  pattern1  pattern2  .....     //退訂符合匹配的全部頻道,可指定多個匹配模式,知足pattern1或者知足pattern2.....,,注意是或。

 

 

五、publish  channel  message   //推送消息到某個頻道

 

紅色的命令是經常使用的。

 

 

 

不少書籍、教程中,關鍵字都使用全大寫,這樣作是爲了好區分關鍵字。其實關鍵字是大小寫等價的。

相關文章
相關標籤/搜索