Redis發布訂閱
發布訂閱模式中發布消息的為publisher即發布者,接收消息的為subscriber即訂閱者。在Redis中,所有的消息通過channel即頻道進行發布,一個發布者可以向多個channel發布消息,一個訂閱者也可以訂閱多個channel。Redis不對消息進行持久化,如果消息發布時訂閱者還沒有進行訂閱,則不會再收到此消息。

發布訂閱命令
| 命令 | 格式 | 說明 |
| PUBLISH | PUBLISH channel message | 發布message到指定的channel |
| SUBSCRIBE | SUBSCRIBE channel [channel ...] | 訂閱1個或多個指定的channel |
| UNSUBSCRIBE | UNSUBSCRIBE [channel [channel ...]] | 取消訂閱1個或多個指定的channel,如果不指定channel退訂所有通過SUBSCRIBE訂閱的channel |
| PSUBSCRIBE | PSUBSCRIBE pattern [pattern ...] | 根據匹配模式訂閱channel |
| PUNSUBSCRIBE | PUNSUBSCRIBE [pattern [pattern ...]] | 根據匹配模式取消訂閱channel,如果不指定匹配模式退訂所有通過PSUBSCRIBE訂閱的channel |
subscribe不能重復訂閱同一個channel,而psubscribe按照匹配模式訂閱時有可能會多次訂閱同一個channel。如果psubscribe多次訂閱了同一個channel,發布者使用publish發布消息到此channel后,訂閱者會多次收到此消息。
unsubscribe只能退訂subscribe訂閱的channel,punsubscribe只能退訂psubscribe訂閱的channel。
使用方法
1、訂閱指定channel
192.168.1.100:6379> subscribe testchan Reading messages... (press Ctrl-C to quit) 1) "subscribe" #訂閱成功 2) "testchan" #訂閱的channel名稱 3) (integer) 1 #已訂閱的channel個數 1) "message" #收到消息 2) "testchan" #消息來源channel 3) "hello" #消息內容 192.168.1.100:6379> publish testchan hello (integer) 1 #收到消息的訂閱者的數量
2、訂閱指定匹配模式的channel
192.168.1.100:6379> psubscribe test* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" #訂閱成功 2) "test*" #訂閱的channel匹配模式 3) (integer) 1 #已訂閱的channel匹配模式個數 1) "pmessage" #收到消息 2) "test*" #匹配的訂閱模式 3) "testchan" #消息來源channel 4) "hello" #消息內容 192.168.1.100:6379> publish testchan hello (integer) 1 #收到消息的訂閱者的數量
