redis之消息订阅发布
一、简介
- 概念:redis消息订阅发布,指的是进程间的一种消息通信模式:发送者(publish)发送消息,订阅者(subscribe)订阅消息。通过subscribe命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时,信息就会被发送给所有订阅指定频道的客户端。
- 订阅/发布消息图:
- 发布/订阅原理:
- 每个 Redis 服务器进程都维持着一个表示服务器状态的 redis.h/redisServer 结构, 结构的 pubsub_channels 属性是一个字典, 这个字典就用于保存订阅频道的信息,其中,字典的键为正在被订阅的频道, 而字典的值则是一个链表, 链表中保存了所有订阅这个频道的客户端。如下图:
- 订阅:通过 pubsub_channels 字典, 程序只要检查某个频道是否为字典的键, 就可以知道该频道是否正在被客户端订阅; 只要取出某个键的值, 就可以得到所有订阅该频道的客户端的信息;
- 取消订阅:从 pubsub_channels 字典的给定频道(键)中, 删除关于当前客户端的信息, 这样被退订频道的信息就不会再发送给这个客户端;
二、常用命令
publish |
发送消息到指定的channel信道 |
subscribe |
订阅一个或者多个信道 |
unsubscribe |
取消订阅指定的信道 |
psubscribe |
订阅一个或多个符合给定模式的信道 |
punsubscribe |
取消订阅一个或多个符合给定模式的信道 |
pubsub |
查看订阅发布的状态 |
下面通过一些简答的示例说明redis中发布、订阅消息的使用方法。
三、示例
- (一)订阅多个信道
终端1: 订阅频道1、频道2、频道3:
SUBSCRIBE channel1 channel2 channel
终端2:向频道内发布消息:
PUBLISH channel1 hellpchannel1
PUBLISH channel2 hellpchannel2
可见,订阅终端只要监听到信道有发布者发布的消息,就会马上被接收到。如果熟悉消息中间件的小伙伴们应该很容易理解发布、订阅消息。
- (二)模式匹配
订阅多个,通配符*:
终端1:订阅名称以channel_*匹配的频道:
PSUBSCRIBE channel_*
终端2:向频道内发布消息:
PUBLISH channel_1 hellpchannel1
PUBLISH channel_2 hellpchannel2
PUBLISH channel3 hellpchannel3
可见,只有满足信道通配符的要求,才能正确地接收到消息。
四、总结
以上就是关于redis中消息订阅发布的简单说明,由于存在不支持消息持久化、客户端需要一直监听等一些缺点,实际项目中一般比较少使用redis作为消息发布订阅的解决方案,一般会选择例如rabbitmq、activeMQ等消息中间件来处理,功能比redis的更加强大。
redis之消息订阅发布相关推荐
- Redis数据库的订阅发布
大家好,今天分享一下redis的订阅发布 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息. Redis 客户端可以订阅任意数量 ...
- react 消息订阅-发布机制(解决兄弟组件通信问题)
消息订阅-发布机制 工具库: PubSubJS 下载: npm install pubsub-js --save 使用: 1)import PubSub from 'pubsub-js' //引入 2 ...
- [Java]SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(二)
又到了显摆分享技术的时候了 没有看过上一篇文章的可以先看一下,这篇是在上一篇基础上接着添加功能 SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(一) 这篇文章的流程为: 1.Spr ...
- Redis消息订阅发布
Redis的发布订阅(pub/sub)是一种 消息通信模式 : 发送者(pub)发送消息,订阅者(sub)接收消息 redis客户端可以订阅任意数量的频道 消息发送者 频道 消息接收者 redis频道 ...
- Redis中消息队列/发布和订阅的介绍及代码实现
一.概念 发布订阅是一种应用程序(系统)之间的通讯 传递数据的技术手段 特别是在异构(不同语言)的系统之间作用非常明显 发布订阅可以实现应用(系统)之间的解耦合 类似于微信中关注公众号/订阅号 那么订 ...
- redis基础之订阅发布、主从复制和事务(四)
前面已经学习了redis的基本的命令行操作和数据类型,下面开始redis一些有趣的功能. 订阅和发布机制 定义:发布者相当于电台,订阅者相当于客户端,客户端发到频道的消息,将会被推送到所有订阅此频道的 ...
- python学习之-- redis模块管道/订阅发布
redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型 exists(name):检测redis的name是否存在 keys(pattern='*'):根据模型获取re ...
- Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU
啤酒理论 Buffer机制,减少没必要的来回调用 前置知识 只要和redis建立了连接,发送字符串,就能交互 管道 发布 / 订阅 help @pubsub 发送者 订阅者 PSUBSCRIBE pa ...
- redis专题-----11-----redis订阅发布以及stream
参考文章: Redis发布订阅模式(publish/subscribe). 一 订阅发布 1 概念 1)为了支持消息的多播机制,redis 引入了发布订阅模块.Redis发布/订阅(Pub/Sub)是 ...
- 深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅【转】
一.消息订阅 订阅消息的主体叫订阅服务器,订阅服务器是可以订阅并消费消息的服务,可以作为订阅服务器的服务类型目前有四类,在BizTalkMgmtDb管理数据库中的adm_ServiceClass的Na ...
最新文章
- C语言里面%2d 意思
- [Freescale]E9学习笔记-LTIB安装配置
- mxnet基础到提高(6)--梯度,反馈与标准化(归一化)
- 未检测到其他显示器_同维工控机显示器显示器没反应维修技术精湛
- Documentation/x86/kernel-stacks
- Objective-C Memory Management Being Exceptional 异常处理与内存
- 由于找不到appvisvsubsystems32.dll_终于熬到孩子上幼儿园,宝妈却找不到工作了,背后原因让人心酸...
- BZOJ 3053 The Closest M Points
- 车金融|合同中心系统的前世今生
- 准备了个freyja实例项目(单数据源版)
- 彻底删除SQL Server注册表的方法(已经多次使用)
- 视频流服务器-red5的安装与使用
- 对于教育改革的一些省思
- 如何计算机内存的品牌,如何检查计算机内存模块的品牌?如何检查计算机的内存...
- 飞塔60d带宽_飞塔防火墙划分带宽 万兆防火墙
- 阿⾥云Apsara Clouder云计算专项技能认证:云服务器ECS⼊门【 个⼈所得税年度应纳税额抵扣 3600(0成本)】
- 程序员,你还没有软技能吗?难怪你不幸福
- 在家想远程公司电脑?Python+微信一键连接!
- 《MySQL必知必会》读书笔记
- C++ 共享指针四宗罪
热门文章
- java sec_java.security文件
- 机器学习 Machine Learning- 吴恩达Andrew Ng Week2-Octave
- 翻译:AI数据科学认证-2021年的最佳选择
- Mac 自定义用户级别Applications, 安装应用到Dashboard
- 大前端技术选型 Native原生iOS, Android, React-Native, Flutter, 微信小程序, HTML5
- 【易实战】SpringCloud Greenwich架构概览深度详解
- 算法:Jump Game
- The Greatest C++ project
- python matplotlib画图实例
- Oracle 10g 数据库连接出现The Network Adapter could not establish the connection解决办法