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

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分布式锁释放的时候,是使用发布与订阅的方式通知的,这个我们将在后面的章节中详细讲解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值