Redis的發佈和訂閱

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 訂閱關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章