Redis(设计与实现):---发布与订阅之频道的订阅与退订(SUBSCRIBE命令、UNSUBCRIBE命令、pubsub_channels属性)

本文详细介绍了Redis中的频道订阅和退订机制,包括SUBSCRIBE命令用于订阅频道,UNSUBSCRIBE命令用于退订,以及pubsub_channels字典在其中的作用,展示了如何维护客户端与频道的订阅关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pubsub_channels字典

Redis将所有频道的订阅关系都保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值则是一个链表,链表里面记录了所有订阅这个频道的客户端:

struct redisServer {
   
   
    // ...
    //保存所有频道的订阅关系
    dict *pubsub_channels;
    // ...
};

比如说,下图就展示了一个pubsub_channels字典示例,这个字典记录了以下信息:

  • client-1、client-2、client-3三个客户端正在订阅"news.it"频道
  • 客户端client-4正在订阅"news.sport"频道
  • client-5和client-6两个客户端正在订阅"news.business"频道
    在这里插入图片描述

一、何为频道的订阅

通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端使用PUBLISH命令向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息

演示案例

假设A、B、C三个客户端都执行了命令,那么这三个客户端就是"news.it"频道的订阅者,如下图所示:

c SUBSCRI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值