一.订阅频道

每当客户端执行 SUBSCRIBE 命令,订阅某个或某些频道的时候,服务器都会将客户端与被订阅的频道在 redisServer.pubsub_channels 字典中进行关联。

a.如果频道已经有其他订阅者, 那么它在 pubsub_channels 字典中必然有相应的订阅者链表, 程序唯一要做的就是将
客户端添加到订阅者链表的末尾。b.如果频道还未有任何订阅者, 那么它必然不存在于 pubsub_channels 字典, 程序首先要在 pubsub_channels 字典中
为频道创建一个键, 并将这个键的值设置为空链表, 然后再将客户端添加到链表, 成为链表的第一个元素。

二.退订频道

UNSUBSCRIBE 命令的行为和 SUBSCRIBE 命令的行为正好相反,当一个客户端退订某个或某些频道的时候,服务器将从 redisServer.pubsub_channels 中解除客户端与被退订频道之间的关联

a.程序会根据被退订频道的名字,在 pubsub_channels 字典中找到频道对应的订阅者链表,然后从订阅者链表中删除
退订客户端的信息。b.如果删除退订客户端之后,频道的订阅者链表变成了空链表,那么说明这个频道已经没有任何订阅者了,程序将从
pubsub_channels 字典中删除频道对应的键。

(Redis设计与实现-6) 频道的订阅与退订相关推荐

  1. Redis学习笔记---Redis的模式订阅与退订

    Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...

  2. EDM备忘录:触发式邮件订阅和退订功能介绍

    一般来说,有触发式邮件订阅和退订功能是邮件模板设计中必不可少的两项功能,下面博主为大家介绍一下. 若客户在订阅后不想再收到这类邮件即可选择退订,将不再收到该IP地址的推广邮件,避免客户在继续收到这类邮 ...

  3. HarmonyOS之公共事件的发布、订阅与退订

    一.简介 ① 概念 HarmonyOS 通过 CES(Common Event Service,公共事件服务)为应用程序提供订阅.发布.退订公共事件的能力,通过 ANS(Advanced Notifi ...

  4. 使用java实现MQTT协议客户端的接收、发布消息和订阅、退订主题topic

    记录一下我实习的第一个任务,学习MQTT协议 首先呢得了解MQTT是什么,这里推荐一个我学习MQTT的中文文档 MQTT协议的基于TCP/IP协议的一个物联网协议,有几个概念必须要弄懂得主题(topi ...

  5. C# 事件订阅、退订简单实现原理

    这里以汽车经销商.顾客为例说明(当顾客订阅了汽车信息后,就能够接受汽车经销商发送的消息) 1.新建一个事件监听类,如下所示: using System; using System.Collection ...

  6. Redis | 第8章 发布订阅与事务《Redis设计与实现》

    第8章 发布订阅与事务 前言 1. 发布订阅 1.1 频道的订阅与退订 1.2 模式的订阅与退订 1.3 发送消息 1.4 查看订阅消息 2. 事务 2.1 事务的实现 2.2 WATCH 命令的实现 ...

  7. Redis设计与实现 -读书笔记

    2. 简单动态字符串(SDS) 定义: struct sdshdr {int len; // buf中已使用字节数量(不包括末尾'\0')int free; // 未使用字节char buf[]; / ...

  8. Redis源码剖析(五)订阅与发布

    Redis提供了订阅和发布的功能,允许客户端订阅一个或多个频道,当其他客户端向某个频道发送消息时,服务器会将消息转发给所有订阅该频道的客户端 这一点有点像群聊的功能,一个客户端将消息发往群中(向某个频 ...

  9. 《Redis设计与实现》笔记|SDS动态字符串|链表字典跳跃表整数集合压缩列表结构|redis中的对象|数据库原理|RDB持久化|AOF持久化|事件与多路利用模型|发布订阅原理|事务原理|慢查询日志

    <Redis设计与实现>笔记 前记: 参考配套网站:http://redisbook.com 带注释的源码地址:https://github.com/huangz1990/redis-3. ...

最新文章

  1. r语言 整理、处理数据步骤_R语言万能数据清洗整理包Tidyverse(一)
  2. mysql 枚举类型 映射_model类中enum类型与数据库字段的映射
  3. 25个出众的Web表单范例
  4. Cloud Studio全文搜索功能介绍
  5. vs2005的webbrowser控件如何接收鼠标事件
  6. Node.js 多版本安装配置(Window、Ubuntu 、CentOS 、Mac OS、Cloud Studio)
  7. 51位院士同写一本书——《两院院士忆高考》新书发布
  8. 设计模式是什么鬼(状态)
  9. mysql canvert mongo_如何在MongoDB中的$match中使用聚合运算符(例如$year或$dayOfMonth)?...
  10. 电脑测试软件_一种笔记本电脑转轴扭力测试仪
  11. spark发行版笔记13
  12. 你所不知道的@ComponentScan注解用法之包路径占位符
  13. Cannot load supported formats: Cannot run program svn: CreateProcess error=2, μ
  14. 计算机坐标公式,经纬度换算坐标公式(经纬度转大地坐标公式)
  15. 局域网打印机共享怎么设置_局域网如何共享打印机
  16. AXI4总线协议总结
  17. SysWow64没有权限解决办法
  18. 网名闲话之“茶乡浪子”
  19. postgre导入dmp文件
  20. PCL 4PCS点云粗配准

热门文章

  1. 大数据将如何重构汽车产业的商业模式?
  2. bat判断3306端口号是否被占用
  3. WCF中绑定的简单介绍
  4. webpack 独立打包 css 文件
  5. windows2003+iis6.0+php(fastcgi)5.3+wincache+memcached
  6. 使用URL在线语音合成
  7. 实时OLAP分析利器Druid介绍
  8. ACM试题 - 另一种阶乘问题
  9. 正则实现二代身份证号码验证详解
  10. Angular JS 中的内置方法之$watch