Redis中發布 訂閱模式

2021-08-20 21:46:54 字數 1553 閱讀 6471

redis 的發布與訂閱功能可以讓使用者將訊息同時傳送給多個客戶端。

這個功能由幾個不同的角色 協作組成:

• 發布者(publisher):

發布訊息的客戶端。

• 頻道(channel):

構建在伺服器內部,負責接收發布者傳送的訊息,並將訊息**給頻道的訂閱者。

• 模式(pattern):

構建在伺服器內部,負責對頻道進行匹配,當被匹配的頻道接到訊息時,模式也會將訊息**給模式的訂閱者。

• 訂閱者(subscriber):

通過訂閱頻道或者模式來獲取訊息的客戶端。每個頻道或者模式都可以有任意多個訂閱者。

subscribe channel [channel ...]

訂閱給定的乙個或多個頻道。

複雜度為 o(n) , n 為被訂閱頻道的數量。

psubscribe pattern [pattern ...]

訂閱乙個或多個模式,pattern 引數可以包含 glob 風格的匹配符,比如:

• new

s::* 模式可以匹配 new

s::bussiness 、 new

s::it 、 new

s::sports::football 等頻道;

• new

s::[ie]t 模式可以匹配 new

s::it 頻道或者 new

s::et 頻道;

• new

s::?t 模式可以匹配 new

s::it 、 new

s::et 、 new

s::at 等頻道;諸如此類。

複雜度為 o(n) ,n 為被訂閱模式的數量。

unsubscribe [channel [channel ...]]

退訂指定的頻道。如果執行時沒有指定任何頻道,那麼退訂已訂閱的所有頻道。

複雜度為o(n),n 為被退訂的頻道數量。

punsubscribe [pattern [pattern ...]]

退訂指定的模式。如果執行時沒有指定任何模式,那麼退訂已訂閱的所有模式。

複雜度為o(m),m 為伺服器中被訂閱模式的數量。

publish channel message

將訊息傳送至指定的頻道,命令返回接收到訊息的 訂閱者數量。

複雜度為 o(n) ,n 為接收到訊息的訂閱者數量(包括通過訂閱頻道來接收訊息的訂閱者和通過訂閱模式來接收訊息的訂閱者)。

pubsub channels [pattern]

列出目前至少有乙個訂閱者的頻道。

如果給定了可選的 pattern 引數,那麼只列出與模式相pubsub numsub [channel-1 ... channel-n]

pubsub numsub [channel-1 ... channel-n]

返回給定頻道的訂閱者數量。

複雜度為 o(n) ,n 為給定頻道的數量。

pubsub numpat

返回伺服器目前被訂閱的模式數量。

複雜度為 o(1) 。

Redis發布訂閱模式

publish subscribe 發布訂閱模式的原理 包含兩個角色,乙個是發布者,乙個是訂閱者 訂閱者可以訂閱乙個或者多個頻道channel 發布者可以向指定頻道發布資訊 通過publish發布訊息 publish channel message publish channel1.1 maizie...

redis訂閱發布模式

理論遲點再補,先上 直接上 demopub.php 發布者 redis new redis redis connect localhost 6379 redis publish mcs 麒麟之才 demosub.php 訂閱者 redis new redis redis connect 127.0....

redis發布訂閱模式

發布 訂閱 模式包含兩種角色,分別是發布者和訂閱者。訂閱者可以訂閱乙個或者多個頻道 channel 而發布者可以向指定的頻道 channel 傳送訊息,所有訂閱此頻道的訂閱者都會收到此訊息。此模式允許生產者只生產一次訊息,由中介軟體負責將訊息複製到多個訊息佇列,每個訊息佇列由對應的消費組消費。模糊匹...