redis 發布訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。
punsubscribe pattern [pattern1 …]
subscribe channel [channel1 …]
unsubscribe channel [channel1 …]
publish channel message
pubsub < subcommand > argument [argument1 …]
subcommand
argument
說明channels
[pattern]
返回指定模式pattern的活躍的頻道,指定返回由subscribe訂閱的頻道
numsub
channel channel2 …
返回指定頻道的訂閱數量
numpat
返回訂閱模式的數量,注意:這個命令返回的不是訂閱模式的客戶端的數量, 而是客戶端訂閱的所有模式的數量總和
redis發布訂閱功能用於訊息的傳輸;redis發布訂閱機制包含3個部分:發布者,訂閱者,channel(頻道)
發布者和訂閱者都是redis客戶端,channel是redis伺服器端,發布者將訊息發布到某一頻道上,訂閱了這一頻道的訂閱者就會收到該條資訊。
如上圖所示,左側的訂閱了滿足sub*的頻道,中間和右側的分別用sub1,sub2頻道傳送了一條資訊,左側成功接收到頻道sub1,sub2傳送過來的資訊;這就是最常用的redis發布訂閱。
publish(channel,message)
例項一:
sub.php
<?php
$redis
=new
\redis()
;$redis
->
connect
('10.117.8.188'
,6379);
function
callbak
($rds
,$channel_name
,$msg
)try
catch
(\exception
$exception
)?>
pub.php
<?php
$redis
=new
\redis()
;$redis
->
connect
('10.117.8.188'
,6379);
$message
=rand
(101
,300);
$channel
='sub1'
;$redis
->
publish
($channel
,$message);
?>
然後按以下流程執行
1. 在xshell的乙個視窗下執行:php sub.php
2. 另開乙個xshell視窗下執行:php pub.php
3. 執行完2之後,到1的視窗下去看,出現如下的字串
object
(redis)
#1 (1)
string(4
)"sub1"
string(3
)"201"
例項二:
類中的方法
訂閱的方法
public
function
subaction()
);}catch
(\exception
$exception)}
發布的方法
public
function
pubaction()
然後按以下流程執行
1. 在xshell的乙個視窗下執行:curl http:
//網域名稱/lives/l06430/comments/sub
2. 另開乙個xshell視窗下執行:curl http:
//網域名稱/lives/l06430/comments/pub
3. 執行完2之後,到1的視窗下去看,出現如下的字串
object
(redis)
#209 (1)
string(4
)"sub1"
string(3
)"110"
psubscribe(pattern,callback)訂閱的方法
public
function
subaction()
);}catch
(\exception
$exception)}
發布的方法
public
function
pubaction()
然後按以下流程執行
1. 在xshell的乙個視窗下執行:curl http:
//網域名稱/lives/l06430/comments/sub
2. 另開乙個xshell視窗下執行:curl http:
//網域名稱/lives/l06430/comments/pub
3. 執行完2之後,到1的視窗下去看,出現如下的字串
object
(redis)
#209 (1)
string(4
)"sub1"
string(3
)"151"
pubsub(keywords,argument) Redis 發布訂閱 pub sub
一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 以下例項演示了發布訂閱是如何工作的。在我們例項中我們建立了訂...
Redis的發布 訂閱(pub sub)
發布訂閱 pub sub 是一種訊息通訊模式 主要的目的是解耦訊息發布者和訊息訂閱者之間的耦合,這點和設計模式中的觀察者模式比較相似。pub sub不僅僅解決發布者和訂閱者直接 級別耦合也解決兩者在物理部署上的耦合。redis作為乙個pub sub server 在訂閱者和發布者之間起到了 訊息路由...
redis中的發布訂閱 Pub Sub
這裡使用nodejs的redis模組說明,具體可見 先來通過乙個簡單的例子了解下redis中的pub sub具體怎麼實現吧。var express require express var router express.router var redis require redis get home p...