Redis 發布訂閱機制詳解

2021-08-24 18:01:28 字數 2085 閱讀 4252

程序間的一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。

聯想諸多訊息中介軟體的發布訂閱模式,但是redis大多用來作為基於記憶體的分布式快取,企業中訊息中介軟體多用activemq、ribbitmq等。

下圖展示了頻道channel1,以及訂閱這個頻道的三個客戶端–client2、client5和client1之間的關係。

當有新訊息通過publish命令傳送給頻道channel1時,這個訊息就會被傳送給訂閱它的三個客戶端:

訂閱乙個或多個符合給定模式的頻道。

每個模式以*作為匹配符,比如it*匹配所有以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等),news.*匹配所有以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類。

返回值:接收到的資訊。

示例如下:

127.0

.0.1:6379> psubscribe news*

reading messages... (press ctrl-c to quit)

1) "psubscribe"

# 返回值的型別:顯示訂閱成功

2) "news*"

# 訂閱的模式

3) (integer) 1

# 目前已訂閱的模式的數量

1) "pmessage"

# 返回值的型別:資訊

2) "news*"

# 資訊匹配的模式

3) "news1"

# 資訊本身的目標頻道

4) "it"

# 資訊的內容

1) "pmessage"

2) "news*"

3) "news2"

4) "english"

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

返回值:接收到資訊 message 的訂閱者數量。

示例如下:

127.0

.0.1:6379> publish c2 helloredis

(integer) 1

#接收到資訊 message 的訂閱者數量。

③ subscribe channel [channel …]訂閱給定的乙個或多個頻道的資訊。

返回值:接收到的資訊。

示例如下:

127.0

.0.1:6379> subscribe c1 c2 c3

reading messages... (press ctrl-c to quit)

1) "subscribe"

# 返回值的型別:顯示訂閱成功

2) "c1"

# 訂閱的頻道名字

3) (integer) 1

# 目前已訂閱的頻道數量

1) "subscribe"

2) "c2"

3) (integer) 2

1) "subscribe"

2) "c3"

3) (integer) 3

1) "message"

# 返回值的型別:資訊

2) "c2"

# **(從那個頻道傳送過來)

3) "helloredis"

# 資訊內容

實際在工作中,一般採用activemq和rabbitmq等訊息中介軟體,並不使用redis作為訊息中介軟體。

activemq參考部落格 :

rabbitmq參考部落格 :

Redis發布訂閱機制

redis是乙個開源的記憶體資料庫,它以鍵值對的形式儲存資料。由於資料儲存在記憶體中,因此redis的速度很快,但是每次重啟redis服務時,其中的資料也會丟失,因此,redis也提供了持久化儲存機制,將資料以某種形式儲存在檔案中,每次重啟時,可以自動從檔案載入資料到記憶體當中。redis的架構包括...

Redis之發布 訂閱機制

相關命令 publish 發布 subscribe 訂閱 psubscribe 一種訂閱符合給定模式的所有頻道的方法 unsubscribe 退訂 punsubscribe 退訂乙個訂閱的模式這些命令被廣泛用於構建即時通訊應用,比如網路聊天室 chatroom 和實時廣播 實時提醒等。redis相關...

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...