1. 程式人生 > >Redis釋出訂閱實現原理

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