Redis發布訂閱實現原理


發布訂閱中使用到的命令就只有三個:PUBLISH,SUBSCRIBE,PSUBSCRIBE

  • PUBLISH 用於發布消息
  • SUBSCRIBE 也叫頻道訂閱,用於訂閱某一特定的頻道
  • PSUBSCRIBE 也叫模式訂閱,用於訂閱某一組頻道,使用glob的方式,比如xxx-*可以匹配xxx-a,和xxx-b,xxx-ddd等等

訂閱頻道: pubsub_channels

關聯操作:

  • 如果已經存在訂閱者,則添加到鏈表的尾部
  • 如果沒有訂閱者,那么創建頻道,然后添加訂閱者

刪除操作:

  • 找到對應的鏈表,進行刪除
  • 如果刪除后,鏈表為空,則刪除頻道

模式訂閱: pubsub_patterns

client-7訂閱music.*
client-8訂閱book.*
client-9訂閱news.*

訂閱模式:

  • 新建一個pubsubPattern結構
  • 添加到鏈表的尾部

退訂模式:

  • 查找相應的pubsubPattern然后刪除

發送消息:

  • 將消息發送給channel頻道的所有訂閱者
  • 遍歷整個pubsub_patterns表,查找匹配的模式,如果有一個或者多個模式與頻道匹配,將消息發送給pattern模式的訂閱者

相關命令:

  • 查看所有的頻道:PUBSUB CHANNELS
  • 查詢訂閱者的數量:PUBSUB NUMSUB
  • 查詢服務器被訂閱者的數量:PUBSUB NUMPAT


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM