Redis的發佈和訂閱
Redis的發佈訂閱是一種消息通信模式。
裏面的邏輯很簡單,引用如下圖。
- 訂閱:
127.0.0.1:6379> subscribe wushichao # 訂閱wushichao頻道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "wushichao"
3) (integer) 1
- 發佈:
127.0.0.1:6379> publish wushichao 111 #向wushichao頻道發佈111消息
(integer) 1
127.0.0.1:6379> publish wushichao hahaha
(integer) 1
127.0.0.1:6379> publish wushichao tiana
(integer) 0
127.0.0.1:6379> pubsub wushichao
(error) ERR Unknown PUBSUB subcommand or wrong number of arguments for 'wushichao'
127.0.0.1:6379> pubsub channels #展示活躍的頻道
1) "wushichao"
127.0.0.1:6379>
其他命令:
參考:https://www.runoob.com/redis/redis-pub-sub.html
原理:
redis-server裏面維護了一個字典,字典裏的鍵就是一個個channel(頻道),值就是一個個鏈表,鏈表裏面存儲了一個個訂閱此頻道的客戶端信息。
subcriber命令的關鍵就是將客戶端添加到指定channel對應的鏈表中。
通過publilsh命令向訂閱者發佈消息,redis-server會使用給定的頻道作爲鍵,在它維護的channel字典中查找記錄了訂閱這個頻道的所有的客戶端對應的鏈表,遍歷這個鏈表,將消息發送給訂閱者。
使用場景:
1 實時消息系統
2 聊天系統
3 訂閱關注