Redis Pub Sub模式 發布 訂閱模式

2021-09-29 04:09:00 字數 1721 閱讀 2920

redis 教程 | 菜鳥教程

redis 發布訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。

redis 客戶端可以訂閱任意數量的頻道。

訂閱者(subscriber):如客戶端

發布者(publisher):如伺服器

頻道(channel):頻道

通訊模型

● redisserver中可以建立若干channel

● 乙個訂閱者可以訂閱多個channel

● 當發布者向乙個頻道中發布一條訊息時,所有的訂閱者都將會收到訊息

● redis的發布訂閱模型沒有訊息積壓功能,即新加入的訂閱者收不到發布者之前發布的訊息

● 當訂閱者收到訊息時,訊息內容如下

● 第一行:固定內容message

● 第二行:channel的名稱

● 第三行:收到的新訊息

發布訂閱的 api

publish:發布訊息

publish channel message  將資訊傳送到指定的channel(頻道)

subscribe:訂閱訊息

subscribe channel [channel ...]  訂閱乙個或多個頻道

unsubscribe:取消訂閱訊息

unsubscribe channel [channel ...] 取消訂閱乙個或多個頻道

redis 模式訂閱 psubscribe/punsubscribe

● psubscribe pattern [pattern ...]  訂閱乙個或多個符合pattern給定模式的頻道

● punsubscribe pattern [pattern ...]  取消訂閱乙個或多個頻道

● pubsub subcommand [argument [argument ...]]  檢視訂閱與發布系統狀態

支援的模式有:?,*,[abc],[^abc],[a-b]

● h?llo matches hello,hallo and hxllo                         匹配包含 h 與 llo 之間,有「乙個」任意字元 的頻道

● h*llo matches hllo and heeeello                                匹配包含 h 與 llo 之間,有任意「多個」字元 的頻道

● h[ae]llo matches hello and hallo,but not hillo         匹配包含 h 與 llo 之間,是a 或者 e 的頻道

● h[^e]llo matches hallo,hbllo,... but not hello         匹配包含 h 與 llo 之間,有乙個字母並且不能是 e 的頻道

● h[a-b]llo matches hallo and hbllo                              匹配包含 h 與 llo 之間,a 到 b 之間的頻道

查詢訂閱狀態

pubsub channels [pattern]:返回符合模式(未指定情況下返回所有)的頻道

pubsub numsub [channel - 1 ... channel - n]:返回指定的頻道的訂閱數

pubsub numpat:返回所有伺服器中被訂閱的模式數目**

**

Java端實現RedisPUB SUB 訂閱發布

redis.clientsgroupid jedisartifactid 2.9.0version jartype compilescope dependency 1.2 開啟 redis 伺服器待命.1 3.先開啟 sub端 package example.me.pubsub import red...

發布 訂閱模式

發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....

發布訂閱模式

不同的語言,相同的模式。最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。作用 1 廣泛應用於非同步程式設計中 2 物件間鬆散耦合的編寫 自定義事件 let corp 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...