Redis(十一)基於redis的釋出訂閱實現
阿新 • • 發佈:2021-02-05
技術標籤: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中執行結果如下:
等待推送。
推送端程式碼:
推送端在網頁中執行。
$redis = new Redis();
$redis->connect("127.0.0.1" ,6379);
$redis->publish("xxxx", "來自msg頻道的推送");
echo "msg頻道訊息推送成功~
";
$redis->close();///*/
推送端程式碼在網頁中執行結束之後,我們去到shell中的結果如下圖所示:
以上大概就是實現了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
歡迎訪問小程式: