• Redis(五)发布与订阅



    1、什么是发布与订阅

    Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
    Redis 的 subscribe 命令可以让客户端订阅任意数量的频道, 
    每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    三个「订阅者」订阅「Channel1」频道:

    在这里插入图片描述
    当 Channel1 的后台发送了一个数据到 Channel1 的频道中,这三个订阅了 Channel1 的客户端就会同时收到这个数据:
    在这里插入图片描述

    2、指令与描述

    命令描述
    PSUBSCRIBE pattern [pattern …]订阅一个或多个符合给定模式的频道
    PUBSUB subcommand [argument [argument …]]查看订阅与发布系统状态
    PUBLISH channel message将信息发送到指定的频道
    PUNSUBSCRIBE [pattern [pattern …]]退订所有给定模式的频道
    SUBSCRIBE channel [channel …]订阅给定的一个或多个频道的信息
    UNSUBSCRIBE [channel [channel …]]退订给定的频道,说明:若没有指定channel,则默认退订所有频道

    3、指令测试

    在这里插入图片描述
    查看活跃的频道
    在这里插入图片描述
    通过 SUBSCRIBE 命令订阅某频道后,redis-server 里维护了一个字典,字典的键就是一个个 channel ,而字典的值则是一个链表,链表中保存了所有订阅这个 channel 的客户端。SUBSCRIBE 命令的关键,就是将客户端添加到给定 channel 的订阅链表中。
    在这里插入图片描述客户端订阅,就被链接到对应频道的链表的尾部,退订则就是将客户端节点从链表中移除。
    缺点:

    • 客户端订阅了channel之后,如果接收消息不及时,可能导致消息堆积,当达到消息堆积阈值(默认值为32MB),或者达到某种程度(默认8MB)一段时间(默认为1分钟)后,服务器端会自动断开该客户端连接,避免导致内部内存耗尽。
    • 当连接断开之后,客户端需要使用subscribe或者psubscribe重新进行订阅,否则无法继续接收消息
    • Redis的pubsub不是一种可靠的消息系统。当出现客户端连接退出,或者极端情况下服务端发生主备切换时,未消费的消息会被丢弃

    应用场景:

    1、实时沟通消息系统
    2、个人博客系统(粉丝关注博主,博主发送一篇博客,订阅的用户就可以监听到)
    3、电商中,用户下单成功之后向指定频道发送消息,下游业务订阅支付结果这个频道处理自己相关业务逻辑
    Redis的pubsub不是一种可靠的消息系统。如果场景复杂,可以使用消息中间件来做,kafka RabbitMQ ActiveMQ RocketMQ …等

  • 相关阅读:
    条件渲染的说明》
    【设计模式】Java 语言不同的编程范式-第1章
    kubeadm快速部署K8S
    想学设计模式、想搞架构设计,先学学 UML 系统建模吧
    μCOS-Ⅲ中断管理,这样理解非常简单!
    外汇天眼:MT4和MT5下架,各个行业大佬是怎么看的?
    HuTool工具类常用方法汇总
    Android Studio实现内容丰富的安卓校园新闻浏览平台
    创建python虚拟环境
    使用Pillow库轻松实现图像尺寸调整——>使每个图像具有相同的大小,方便模型处理和训练
  • 原文地址:https://blog.csdn.net/qq_45637894/article/details/130903886