發布publish
訂閱subscribe
Redis 通過 PUBLISH 、 SUBSCRIBE 等命令實現了訂閱與發布模式。
舉例1:
qq群的公告,單個發布者,多個收聽者
發布/訂閱 實驗
發布訂閱的命令
PUBLISH channel msg 將信息 message 發送到指定的頻道 channel
SUBSCRIBE channel [channel ...] 訂閱頻道,可以同時訂閱多個頻道
UNSUBSCRIBE [channel ...] 取消訂閱指定的頻道, 如果不指定頻道,則會取消訂閱所有頻道 PSUBSCRIBE pattern [pattern ...] 訂閱一個或多個符合給定模式的頻道,每個模式以 * 作為匹配符,比如 it* 匹配所 有以 it 開頭的頻道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 開頭的頻道( news.it 、 news.global.today 等等),諸如此類 PUNSUBSCRIBE [pattern [pattern ...]] 退訂指定的規則, 如果沒有參數則會退訂所有規則 PUBSUB subcommand [argument [argument ...]] 查看訂閱與發布系統狀態 注意:使用發布訂閱模式實現的消息隊列,當有客戶端訂閱channel后只能收到后續發布到該頻道的消息,之前發送的不會緩存,必須Provider和Consumer同時在線。
發布訂閱:
窗口1,啟動兩個redis-cli窗口,均訂閱diantai 頻道(channel)
窗口2,啟動發布者向頻道 diantai發送消息
[root@web02 ~]# redis-cli 127.0.0.1:6379> PUBLISH diantai 'jinyewugenglaiwojia' (integer) 2
窗口3,查看訂閱者的消息狀態
訂閱一個或者多個符合模式的頻道
窗口1,啟動兩個redis-cli窗口,均訂閱 wang*頻道(channel)
127.0.0.1:6379> PSUBSCRIBE wang* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "wang*" 3) (integer) 1
1) "pmessage" 2) "wang*" 3) "wangbaoqiang" 4) "jintian zhennanshou "
窗口2,啟動redis-cli窗口,均訂閱wang*頻道
127.0.0.1:6379> PSUBSCRIBE wang* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "wang*" 3) (integer) 1 1) "pmessage" 2) "wang*" 3) "wangbaoqiang" 4) "jintian zhennanshou "
窗口3,發布者消息
[root@web02 ~]# redis-cli 127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou " (integer) 2