• 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 …等

  • 相关阅读:
    好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快
    MSSQL-逻辑级常用命令
    13.真刀实枪做项目---博客系统(页面设计)
    CSS3-圆角边框border-radius 盒子阴影border-shadow
    Redis服务
    vue 笔记03
    Arduino框架下ESP32/8266使用PROGMEM功能将数据存储到flash中的使用规范
    Copy
    springboot+vue+elementui餐厅外卖团购点餐限时秒杀网站平台
    spring组件之BeanFactory
  • 原文地址:https://blog.csdn.net/qq_45637894/article/details/130903886