文章目录

  • Redis发布与订阅
    • 1、订阅与退订的原理
      • I. 频道的订阅与退订
      • II. 模式的订阅与退订
    • 2、发布的原理
      • I. 发布给频道订阅者
      • II. 发布给模式订阅者
    • 3、其它命令

Redis发布与订阅

Redis的发布与订阅功能通过PUBLISH、SUBSCRIBE/UNSUBSCRIBE、PSUBSCRIBE/PUNSUBSCRIBE等命令组成。

  • 通过SUBSCRIBE,客户端可以订阅一个或多个频道,成为这些频道的订阅者,并可以通过UBSUBSCRIBE退订。
  • 通过PSUBSCRIBE,客户端可以订阅一个或多个模式,成为这些频道的订阅者,并可以通过PUBSUBSCRIBE退订。
  • 每当有其他客户端通过PUBLISH向这些频道发送消息时,频道的所有订阅者都将收到这条消息。

注:模式就是使用了通配符的频道名,比如news.*。

通配符:

  • ?:一个占位符
  • *:0至多个占位符
  • ?*:一个及以上个占位符

1、订阅与退订的原理

I. 频道的订阅与退订

  1. Redis服务器维护了一个名为pubsub_channels字典,字典的键是被订阅的频道值是订阅了这些频道的客户端链表

  2. 当一个客户端订阅(SUBSCRIBE)频道时,服务器首先到字典中查找是否有这个频道。

    • 如果有,则将该客户端放至链表的末尾。

    • 如果没有,则先创建该频道的键,然后将客户端插入链表。

  3. 当一个客户端退订(UNSUBSCRIBE)频道时,服务器到字典中找到频道的键并删除该客户端的信息。如果删除后链表为空,则将键一并删除。

II. 模式的订阅与退订

  1. Redis服务器维护了一个名为pubsub_pattern链表,每个链表节点存储了客户端及其订阅的模式
  2. 当客户端订阅(PSUBSCRIBE)模式时,服务器创建一个存储客户端及其订阅模式的链表节点,并将其添加至链表的末尾。
  3. 当客户端退订(PUNSUBSCRIBE)模式时,服务器在链表中寻找对应的节点并将其删除。

2、发布的原理

I. 发布给频道订阅者

Redis服务器根据频道名到字典中查找对应的订阅客户端链表,然后将信息发送给所有的订阅者。

II. 发布给模式订阅者

Redis服务器遍历pubsub_pattern链表,并将消息发送给订阅了对应模式的客户端。

3、其它命令

  • PUBSUB CHANNELS [pattern]:查看当前服务器中被订阅的频道,如果提供了pattern字段,则查看当前服务器中符合pattern模式的频道。
  • PUBSUB NUMSUB channel [channel1 …]:返回当前服务器中对应频道的订阅者数量。
  • PUBSUB NUMPAT:返回当前服务器中订阅了模式的订阅者数量。

Redis发布订阅与原理相关推荐

  1. Redis 发布订阅原理以及springboo中RedisTemplate集成

    一.Redis发布订阅原理 Redis的架构包括两个部分:Redis Client和Redis Server,即客户端和服务端.客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客 ...

  2. Redis 进阶篇:发布订阅模式原理与运用

    Redis 通过 SUBSCRIBE,UNSUBSCRIBE和 PUBLISH 实现发布订阅消息传递模式,Redis 提供了两种模式实现,分别是「发布 / 订阅到频道」和「发布 \ 订阅到模式」. [ ...

  3. Redis进阶篇:发布订阅模式原理与运用

    目录 Redis 发布订阅简介 Pub/Sub 实战 通过频道(Channel)实现 通过模式(Pattern)实现 订阅模式 Redisson 与 SpringBoot 实战 原理分析 频道(Cha ...

  4. Redis发布订阅模式实现原理

    前言 发布订阅系统在我们日常的工作中经常会使用到,这种场景大部分情况我们都是使用消息队列,常用的消息队列有 Kafka,RocketMQ,RabbitMQ,每一种消息队列都有其特性,很多时候我们可能不 ...

  5. Redis 发布订阅,小功能大用处,真没那么废材!

    假设我们有这么一个业务场景,在网站下单支付以后,需要通知库存服务进行发货处理. 上面业务实现不难,我们只要让库存服务提供给相关的给口,下单支付之后只要调用库存服务即可. 后面如果又有新的业务,比如说积 ...

  6. 5.Redis 发布订阅

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub ...

  7. python redis订阅_Python -- Redis 发布订阅

    一.前言 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 ...

  8. google的api key调用次数是多少_Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?...

    前言 在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性.高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用.与此同时,这种方案也 ...

  9. 使用Spring Redis发布/订阅

    继续发现功能强大的Redis功能集,值得一提的是对发布/订阅消息的开箱即用支持. 发布/订阅消息传递是许多软件体系结构的重要组成部分. 某些软件系统要求消息传递解决方案提供高性能,可伸缩性,队列持久性 ...

最新文章

  1. IO流 字符流 字节流 缓冲流 文件的复制
  2. uva 12167(强连通分支)
  3. 【案例】弱电机房用电负荷计算意义及计算方法
  4. python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
  5. java List 排序 Collections.sort() 对 List 排序
  6. Haproxy 与 Cookie
  7. Prometheus-使用Prometheus监控Kubernetes集群
  8. 编译器后端,寄存器分配算法
  9. Apache POI 安全漏洞
  10. sas入门学习 via.数说工作室
  11. SOUI使用总结知识汇总.
  12. matlab三次样条插值多项式,三次样条插值多项式matlab
  13. 华为性格测试题目讲解
  14. 基于图片的三维重建深度图与原图
  15. 计算机字的符号,特殊符号图案大全
  16. hdu1024 最大m段和 划分dp
  17. (nlogn)的时间复杂度求 最近点对 hdu 1007 凹凸曼与小怪兽的故事 poj3714 Raid...
  18. 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
  19. [UE5]物体沿指定路径(样条线)循环往复的移动
  20. 基于APS的供应链计划管理的类型阐述

热门文章

  1. html5 智能表单验证
  2. Linux防火墙状态查看的方法
  3. 课后练习 第4章 递归
  4. SOC与MCU的区别是什么
  5. HC-05蓝牙无线模块设置
  6. Windows版Docker(基于WSL2)增加端口映射(需重启Docker)
  7. Threejs入门之十一:创建旋转的地球
  8. 安卓WebView无法显示百度地图网页版的解决办法
  9. Java、大数据开发学习要点(持续更新中...)
  10. Linux运行xp,浏览器中运行Windows XP和Ubuntu?奇!