Redis訂閱與發布原理

2021-09-01 00:16:39 字數 901 閱讀 3622

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

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.正則匹配的頻道  逐個傳送對應訂閱的客戶端。

redis 發布與訂閱原理分析

一 訂閱頻道和資訊發布 功能說明 redis 的 subscribe 命令可以讓客戶端訂閱任意數量的頻道,每當有新資訊傳送到被訂閱的頻道時,資訊就會被傳送給所有訂閱指定頻道的客戶端。訂閱例子示意圖 下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 c...

Redis發布與訂閱命令和原理

本篇部落格是對 redis設計與實現 的學習總結 日期 2020 12 11 redis版本 3.0.6 訂閱 subscribe channel channel 訂閱乙個或多個頻道,返回訂閱的頻道數 發布publish channel message向乙個頻道發布訊息,返回向多少個客戶端傳送了訊息...

Redis 發布與訂閱

redis 自從2.0版本後,增加發布與訂閱等新特性,該功能有點類似設計模式中的觀察者模式,對訊息的生產者與接收者進行松耦合。也可以用該特性實現系統與系統之間的訊息傳遞,該功能的 的實現非常實用和高效。下面我們介紹一下,如何使用發布與訂閱 redis提供發布與訂閱幾個命令 subscribe cha...