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 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...