Redis发布订阅与原理
文章目录
- Redis发布与订阅
- 1、订阅与退订的原理
- I. 频道的订阅与退订
- II. 模式的订阅与退订
- 2、发布的原理
- I. 发布给频道订阅者
- II. 发布给模式订阅者
- 3、其它命令
Redis发布与订阅
Redis的发布与订阅功能通过PUBLISH、SUBSCRIBE/UNSUBSCRIBE、PSUBSCRIBE/PUNSUBSCRIBE
等命令组成。
- 通过
SUBSCRIBE
,客户端可以订阅一个或多个频道,成为这些频道的订阅者,并可以通过UBSUBSCRIBE
退订。 - 通过
PSUBSCRIBE
,客户端可以订阅一个或多个模式,成为这些频道的订阅者,并可以通过PUBSUBSCRIBE
退订。 - 每当有其他客户端通过
PUBLISH
向这些频道发送消息时,频道的所有订阅者都将收到这条消息。
注:模式就是使用了通配符的频道名,比如news.*。
通配符:
- ?:一个占位符
- *:0至多个占位符
- ?*:一个及以上个占位符
1、订阅与退订的原理
I. 频道的订阅与退订
Redis服务器维护了一个名为
pubsub_channels
的字典,字典的键是被订阅的频道,值是订阅了这些频道的客户端链表。当一个客户端订阅(
SUBSCRIBE
)频道时,服务器首先到字典中查找是否有这个频道。如果有,则将该客户端放至链表的末尾。
如果没有,则先创建该频道的键,然后将客户端插入链表。
当一个客户端退订(
UNSUBSCRIBE
)频道时,服务器到字典中找到频道的键并删除该客户端的信息。如果删除后链表为空,则将键一并删除。
II. 模式的订阅与退订
- Redis服务器维护了一个名为
pubsub_pattern
的链表,每个链表节点存储了客户端及其订阅的模式。 - 当客户端订阅(
PSUBSCRIBE
)模式时,服务器创建一个存储客户端及其订阅模式的链表节点,并将其添加至链表的末尾。 - 当客户端退订(
PUNSUBSCRIBE
)模式时,服务器在链表中寻找对应的节点并将其删除。
2、发布的原理
I. 发布给频道订阅者
Redis服务器根据频道名到字典中查找对应的订阅客户端链表,然后将信息发送给所有的订阅者。
II. 发布给模式订阅者
Redis服务器遍历pubsub_pattern
链表,并将消息发送给订阅了对应模式的客户端。
3、其它命令
- PUBSUB CHANNELS [pattern]:查看当前服务器中被订阅的频道,如果提供了pattern字段,则查看当前服务器中符合pattern模式的频道。
- PUBSUB NUMSUB channel [channel1 …]:返回当前服务器中对应频道的订阅者数量。
- PUBSUB NUMPAT:返回当前服务器中订阅了模式的订阅者数量。
Redis发布订阅与原理相关推荐
- Redis 发布订阅原理以及springboo中RedisTemplate集成
一.Redis发布订阅原理 Redis的架构包括两个部分:Redis Client和Redis Server,即客户端和服务端.客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客 ...
- Redis 进阶篇:发布订阅模式原理与运用
Redis 通过 SUBSCRIBE,UNSUBSCRIBE和 PUBLISH 实现发布订阅消息传递模式,Redis 提供了两种模式实现,分别是「发布 / 订阅到频道」和「发布 \ 订阅到模式」. [ ...
- Redis进阶篇:发布订阅模式原理与运用
目录 Redis 发布订阅简介 Pub/Sub 实战 通过频道(Channel)实现 通过模式(Pattern)实现 订阅模式 Redisson 与 SpringBoot 实战 原理分析 频道(Cha ...
- Redis发布订阅模式实现原理
前言 发布订阅系统在我们日常的工作中经常会使用到,这种场景大部分情况我们都是使用消息队列,常用的消息队列有 Kafka,RocketMQ,RabbitMQ,每一种消息队列都有其特性,很多时候我们可能不 ...
- Redis 发布订阅,小功能大用处,真没那么废材!
假设我们有这么一个业务场景,在网站下单支付以后,需要通知库存服务进行发货处理. 上面业务实现不难,我们只要让库存服务提供给相关的给口,下单支付之后只要调用库存服务即可. 后面如果又有新的业务,比如说积 ...
- 5.Redis 发布订阅
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub ...
- python redis订阅_Python -- Redis 发布订阅
一.前言 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 ...
- google的api key调用次数是多少_Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?...
前言 在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性.高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用.与此同时,这种方案也 ...
- 使用Spring Redis发布/订阅
继续发现功能强大的Redis功能集,值得一提的是对发布/订阅消息的开箱即用支持. 发布/订阅消息传递是许多软件体系结构的重要组成部分. 某些软件系统要求消息传递解决方案提供高性能,可伸缩性,队列持久性 ...
最新文章
- IO流 字符流 字节流 缓冲流 文件的复制
- uva 12167(强连通分支)
- 【案例】弱电机房用电负荷计算意义及计算方法
- python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
- java List 排序 Collections.sort() 对 List 排序
- Haproxy 与 Cookie
- Prometheus-使用Prometheus监控Kubernetes集群
- 编译器后端,寄存器分配算法
- Apache POI 安全漏洞
- sas入门学习 via.数说工作室
- SOUI使用总结知识汇总.
- matlab三次样条插值多项式,三次样条插值多项式matlab
- 华为性格测试题目讲解
- 基于图片的三维重建深度图与原图
- 计算机字的符号,特殊符号图案大全
- hdu1024 最大m段和 划分dp
- (nlogn)的时间复杂度求 最近点对 hdu 1007 凹凸曼与小怪兽的故事 poj3714 Raid...
- 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
- [UE5]物体沿指定路径(样条线)循环往复的移动
- 基于APS的供应链计划管理的类型阐述