Redis学习笔记—Redis的模式订阅与退订

1.发布订阅简介

  1. 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输
  2. Redis的发布订阅机制包括三个部分,publisher(发布)subscriber(订阅)Channel
  3. 发布者订阅者都是Redis客户端,Channel则为Redis服务器端
  4. 发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息

2.发布订阅机制:订阅某个频道或模式:

  1. 客户端(client)

    1. 属性为pubsub_channels,该属性表明了该客户端订阅的所有频道
    2. 属性为pubsub_patterns,该属性表示该客户端订阅的所有模式
    typedef struct redisClient {
    ...
    //该client订阅的channels,以channel为key用dict的方式组织,value就是client
    dict *pubsub_channels; //该client订阅的pattern(模式),以list的方式组织,里面是订阅的pattern
    list *pubsub_patterns;
    ...
    } redisClient;
    
  2. 服务器端(RedisServer)
    1. 属性为pubsub_channels,该服务器端中的所有频道以及订阅了这个频道的客户端
    2. 属性为pubsub_patterns,该服务器端中的所有模式和订阅了这些模式的客户端
    struct redisServer {
    ...
    // redis server进程中维护的channel dict,它以channel为key
    // 订阅这个channel的所有client是value,value是list的类型
    dict *pubsub_channels; //redis server进程中维护的pattern,类型是list,里面放pattern和客户端(clients),也就是订阅这个模式的所有客户端
    list *pubsub_patterns;
    int notify_keyspace_events;... };
    
  3. 过程介绍
    1. 当客户端向某个频道发送消息时,Redis首先在redisServer中的pubsub_channels中找出键为该频道的结点,遍历该结点的值,即遍历订阅了该频道的所有客户端,将消息发送给这些客户端。
    2. 然后,遍历结构体redisServer中的pubsub_patterns,找出包含该频道的模式的结点,将消息发送给订阅了该模式的客户端。
  4. 使用场景:哨兵模式,Redisson框架使用
    1. 在Redis哨兵模式中,哨兵通过发布与订阅的方式与Redis主服务器和Redis从服务器进行通信。这个我们将在后面的章节中详细讲解。
    2. Redisson是一个分布式锁框架,在Redisson分布式锁释放的时候,是使用发布与订阅的方式通知的,这个我们将在后面的章节中详细讲解。

Redis学习笔记---Redis的模式订阅与退订相关推荐

  1. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  2. Redis学习笔记---Redis的主从复制

    Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...

  3. Redis学习笔记~Redis在windows环境下的安装

    Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...

  4. Redis学习笔记---Redis的事务

    Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...

  5. redis学习笔记---redis的哨兵Sentinel

    2019独角兽企业重金招聘Python工程师标准>>> 一.介绍: redis的sentinel系统用来管理多个redis服务器,可以实现一个功能上实现HA的集群.该系统主要执行三个 ...

  6. redis 学习笔记——redis集群

    redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...

  7. Redis学习笔记--Redis数据过期策略详解==转

    本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...

  8. Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现

    回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis驱 ...

  9. Redis学习笔记--Redis数据过期策略详解

    过期策略 https://www.cnblogs.com/xuliangxing/p/7151812.html 内存淘汰机制 https://blog.csdn.net/yuanlong122716/ ...

最新文章

  1. Centos7安装Apache和PHP,包含配置过程
  2. JobScheduler的使用
  3. mysql 变量生命周期_Go: 延长变量的生命周期
  4. 一个简单的Kafka Flink Rabbitmq Demo
  5. 【Java】List 按照字符串里的数值排序
  6. 全国地名联动选择的程序|地名三级联动(原创JS无数据库19K优化版)
  7. 软件测评师的一些重点①
  8. 20中氨基酸名称、简写及化学式
  9. Android串口开发
  10. 特征级融合_自动驾驶系统入门(七)- 多传感器信息融合(MSIF)
  11. Win10系统导出证书私钥及公钥
  12. EduCoder-Web程序设计基础-html5—表格高级样式的设置-第5关:表格的综合案例
  13. 趣聊51之串口通信(实现篇)
  14. 领导逼迫员工离职的10大套路
  15. 会声会影X10视频制作软件中文密钥激活版
  16. Foxmail 邮件的备份与恢复
  17. 七星聚会!我在学堂在线获得的荣誉证书!(截至2017年8月12日)
  18. GameFramework框架详解之(四)对象池模块
  19. message from server: Host 'DESKTOP-QIR7OV5' is not allowed to connect to this MySQL server问题
  20. 从一文不值到数字黄金 诞生于极客圈的比特币,究竟经历了什么?

热门文章

  1. 将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私
  2. 秒懂Java类型(Type)系统
  3. 程序员 6 个接私活的网站,有技术就有钱!
  4. Windows编程与MFC # 4 单文档应用程序(1)
  5. javaWeb——图片验证
  6. 【原创】什么是原码、反码、补码?
  7. #19# SCCM管理 - 更新部署
  8. oracle列转行 listagg
  9. 【AtomicLong】常规用法
  10. 获取 本地/网 络图片尺寸