1. 程式人生 > 其它 >Redis(十一)基於redis的釋出訂閱實現

Redis(十一)基於redis的釋出訂閱實現

技術標籤:redis

Redis提供了釋出訂閱功能,可以用於訊息的傳輸,Redis的釋出訂閱機制包括三個部分,釋出者,訂閱者和Channel。

釋出者和訂閱者都是Redis客戶端,Channel則為Redis伺服器端,釋出者將訊息傳送到某個的頻道,訂閱了這個頻道的訂閱者就能接收到這條訊息。Redis的這種釋出訂閱機制與基於主題的釋出訂閱類似,Channel相當於主題。

Redis釋出訂閱功能

(1)傳送訊息

Redis採用PUBLISH命令傳送訊息,其返回值為接收到該訊息的訂閱者的數量。

(2)訂閱某個頻道

Redis採用SUBSCRIBE命令訂閱某個頻道,其返回值包括客戶端訂閱的頻道,目前已訂閱的頻道數量,以及接收到的訊息,其中subscribe表示已經成功訂閱了某個頻道。

下邊有一個小例子,我這裡使用PHP來實現:

訂閱端程式碼:

訂閱端程式碼需要在shell中執行:

$redis = new Redis();
    $redis->pconnect("127.0.0.1", 6379);
    //訂閱
    echo "訂閱msg這個頻道,等待訊息推送... 
";
    $redis->subscribe(["xxxx"], "callfun");
    function callfun($redis, $channel, $msg)
    {
        print_r
([ "redis" => $redis, "channel" => $channel, "msg" => $msg ]); }//*/

Subscribe訂閱命令,第一個引數是訂閱的頻道,第二個引數是回撥函式。

在shell中執行結果如下:

1.png

等待推送。

推送端程式碼:

推送端在網頁中執行。

$redis = new Redis();
    $redis->connect("127.0.0.1"
,6379); $redis->publish("xxxx", "來自msg頻道的推送"); echo "msg頻道訊息推送成功~ "; $redis->close();///*/

推送端程式碼在網頁中執行結束之後,我們去到shell中的結果如下圖所示:

2.png

以上大概就是實現了redis的訂閱及釋出。當然,實際應用中肯定和上邊的例子是不一樣的。

這個需要到時候再看,大概理解訂閱及釋出的原理就好。

最後放一下redis釋出訂閱常用的一些命令:

Redis 釋出訂閱命令
下表列出了 redis 釋出訂閱常用命令:

序號

命令及描述

1

PSUBSCRIBE pattern [pattern   ...] 
  訂閱一個或多個符合給定模式的頻道。

2

PUBSUB subcommand [argument   [argument ...]] 
  檢視訂閱與釋出系統狀態。

3

PUBLISH channel message 
  將資訊傳送到指定的頻道。

4

PUNSUBSCRIBE [pattern   [pattern ...]] 
  退訂所有給定模式的頻道。

5

SUBSCRIBE channel [channel   ...] 
  訂閱給定的一個或多個頻道的資訊。

6

UNSUBSCRIBE [channel [channel   ...]] 
  指退訂給定的頻道。

有好的建議,請在下方輸入你的評論。

歡迎訪問個人部落格
https://guanchao.site

歡迎訪問小程式:
在這裡插入圖片描述