redis 自從2.0版本後,增加發布與訂閱等新特性,該功能有點類似設計模式中的觀察者模式,對訊息的生產者與接收者進行松耦合。也可以用該特性實現系統與系統之間的訊息傳遞,該功能的
的實現非常實用和高效。
下面我們介紹一下,如何使用發布與訂閱 。redis提供發布與訂閱幾個命令:
subscribe channel [channel ...]
psubscribe pattern [pattern ...]
punsubscribe [pattern [pattern ...]]
unsubscribe [channel [channel ...]]
發布訊息
redis 10.40.14.77:8379> publish testchannel testc
(integer) 1
redis 10.40.14.77:8379> publish testchannel 'test message'
(integer) 1
redis 10.40.14.77:8379> publish testchannel 'a am'
(integer) 1
redis 10.40.14.77:8379> publish testchannel 'china'
(integer) 1
redis 10.40.14.77:8379>
訂閱訊息
redis 10.40.14.77:8379> subscribe testchannel
reading messages... (press ctrl-c to quit)
1) "subscribe"
2) "testchannel"
3) (integer) 1
1) "message"
2) "testchannel"
3) "test"
1) "message"
2) "testchannel"
3) "test"
1) "message"
2) "testchannel"
3) "testc"
1) "message"
2) "testchannel"
3) "test message"
1) "message"
2) "testchannel"
3) "a am"
1) "message"
2) "testchannel"
3) "china"
上述示例,從乙個客戶端開啟傳送訊息,在另一客戶端接收訊息,頻道名:testchannel 。
也要以一次性訂閱多個channel
redis 10.40.14.77:8379> publish c1 'hello world'
(integer) 1
redis 10.40.14.77:8379> publish c2 'hello world c2'
(integer) 1
訂閱 訊息方
redis 10.40.14.77:8379> subscribe c1 c2
reading messages... (press ctrl-c to quit)
1) "subscribe"
2) "c1"
3) (integer) 1
1) "subscribe"
2) "c2"
3) (integer) 2
1) "message"
2) "c1"
3) "hello world"
1) "message"
2) "c2"
3) "hello world c2"
也可以指定乙個或多個pattern訂閱訊息
redis 10.40.14.77:8379> publish c1.news 'hello world news '
(integer) 1
redis 10.40.14.77:8379> publish c1.pics 'hello world pics'
(integer) 1
redis 10.40.14.77:8379>
訂閱訊息方
eading messages... (press ctrl-c to quit)
1) "psubscribe"
2) "c1.*"
3) (integer) 1
1) "pmessage"
2) "c1.*"
3) "c1.news"
4) "hello news cannel"
1) "pmessage"
2) "c1.*"
3) "c1.pics"
4) "hello pics chnnale"
1) "pmessage"
2) "c1.*"
3) "c1.news"
4) "hello world news "
1) "pmessage"
2) "c1.*"
3) "c1.pics"
4) "hello world pics"
redis發布與訂閱
redis在2.8.0版本之後出了乙個新功能,叫pub sub,也叫 發布與訂閱 在這篇文章中不僅要介紹它是如何用的,更重要的是要介紹它的應用場景。在之前介紹websocket之用tubesock在rails實現聊天室 五 的時候,就用redis的pub sub實現過聊天室。相關的 是這樣的 red...
Redis發布與訂閱
訂閱 發布訊息圖 第乙個 訊息傳送者,第二個 頻道 第三個 訊息訂閱者!下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 publish 命令傳送給頻道 channel1 時,這個訊息就會被傳送給訂閱它的三...
Redis發布與訂閱模式
redis的pub sub實現了發布 訂閱訊息正規化,發布者將訊息發布到不同的頻道,訂閱者訂閱感興趣的頻道訊息,而不需要關心是誰在發布。這種發布者和訂閱者的解耦合方式可以極大的擴充套件的擴充套件性網路拓撲。為了訂閱foo和bar,客戶端發出乙個訂閱的頻道名稱 subscribe foo bar其他客...