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

Redis訂閱與釋出原理

記錄下來以後方便回憶,需要時隨時翻閱

Redis 訂閱與釋出 原理

client->pubsub_channels 是客戶端維護的一個以dict結構的維護的訂閱頻道雜湊表,VAL是NULL,不需要值。

server->pubsub_channels 是服務端維護的一個以dict結構的維護的訂閱頻道雜湊表,VAL是以client維護的雙向連結串列adlist。

一、訂閱

訂閱流程:SUBSCRIBE命令   SUBSCRIBE channel [channel ...]

1.首先是將當前訂閱的頻道channel新增進客戶端的pubsub_channels雜湊表裡面。

2.然後在將當前訂閱的頻道channel和對應的client以鍵值對新增服務端的pubsub_channels的雜湊表裡。

3.最後將返回的資訊返回給客戶端。

二、釋出

訂閱流程:PUBLISH命令   PUBLISH channel message

1.首先通過頻道在服務端的pubsub_channels雜湊表裡面找到對應的客戶端連結串列。

2.然後遞迴迴圈連結串列,逐個將訊息message傳送對應訂閱的客戶端。

3.正則匹配的頻道  逐個傳送對應訂閱的客戶端。