一、简介

  • 概念: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之消息订阅发布相关推荐

  1. Redis数据库的订阅发布

    大家好,今天分享一下redis的订阅发布 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息. Redis 客户端可以订阅任意数量 ...

  2. react 消息订阅-发布机制(解决兄弟组件通信问题)

    消息订阅-发布机制 工具库: PubSubJS 下载: npm install pubsub-js --save 使用: 1)import PubSub from 'pubsub-js' //引入 2 ...

  3. [Java]SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(二)

    又到了显摆分享技术的时候了 没有看过上一篇文章的可以先看一下,这篇是在上一篇基础上接着添加功能 SpringBoot2整合mqtt服务器EMQ实现消息订阅发布入库(一) 这篇文章的流程为: 1.Spr ...

  4. Redis消息订阅发布

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

  5. Redis中消息队列/发布和订阅的介绍及代码实现

    一.概念 发布订阅是一种应用程序(系统)之间的通讯 传递数据的技术手段 特别是在异构(不同语言)的系统之间作用非常明显 发布订阅可以实现应用(系统)之间的解耦合 类似于微信中关注公众号/订阅号 那么订 ...

  6. redis基础之订阅发布、主从复制和事务(四)

    前面已经学习了redis的基本的命令行操作和数据类型,下面开始redis一些有趣的功能. 订阅和发布机制 定义:发布者相当于电台,订阅者相当于客户端,客户端发到频道的消息,将会被推送到所有订阅此频道的 ...

  7. python学习之-- redis模块管道/订阅发布

    redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型 exists(name):检测redis的name是否存在 keys(pattern='*'):根据模型获取re ...

  8. Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU

    啤酒理论 Buffer机制,减少没必要的来回调用 前置知识 只要和redis建立了连接,发送字符串,就能交互 管道 发布 / 订阅 help @pubsub 发送者 订阅者 PSUBSCRIBE pa ...

  9. redis专题-----11-----redis订阅发布以及stream

    参考文章: Redis发布订阅模式(publish/subscribe). 一 订阅发布 1 概念 1)为了支持消息的多播机制,redis 引入了发布订阅模块.Redis发布/订阅(Pub/Sub)是 ...

  10. 深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅【转】

    一.消息订阅 订阅消息的主体叫订阅服务器,订阅服务器是可以订阅并消费消息的服务,可以作为订阅服务器的服务类型目前有四类,在BizTalkMgmtDb管理数据库中的adm_ServiceClass的Na ...

最新文章

  1. C语言里面%2d 意思
  2. [Freescale]E9学习笔记-LTIB安装配置
  3. mxnet基础到提高(6)--梯度,反馈与标准化(归一化)
  4. 未检测到其他显示器_同维工控机显示器显示器没反应维修技术精湛
  5. Documentation/x86/kernel-stacks
  6. Objective-C Memory Management Being Exceptional 异常处理与内存
  7. 由于找不到appvisvsubsystems32.dll_终于熬到孩子上幼儿园,宝妈却找不到工作了,背后原因让人心酸...
  8. BZOJ 3053 The Closest M Points
  9. 车金融|合同中心系统的前世今生
  10. 准备了个freyja实例项目(单数据源版)
  11. 彻底删除SQL Server注册表的方法(已经多次使用)
  12. 视频流服务器-red5的安装与使用
  13. 对于教育改革的一些省思
  14. 如何计算机内存的品牌,如何检查计算机内存模块的品牌?如何检查计算机的内存...
  15. 飞塔60d带宽_飞塔防火墙划分带宽 万兆防火墙
  16. 阿⾥云Apsara Clouder云计算专项技能认证:云服务器ECS⼊门【 个⼈所得税年度应纳税额抵扣 3600(0成本)】
  17. 程序员,你还没有软技能吗?难怪你不幸福
  18. 在家想远程公司电脑?Python+微信一键连接!
  19. 《MySQL必知必会》读书笔记
  20. C++ 共享指针四宗罪

热门文章

  1. java sec_java.security文件
  2. 机器学习 Machine Learning- 吴恩达Andrew Ng Week2-Octave
  3. 翻译:AI数据科学认证-2021年的最佳选择
  4. Mac 自定义用户级别Applications, 安装应用到Dashboard
  5. 大前端技术选型 Native原生iOS, Android, React-Native, Flutter, 微信小程序, HTML5
  6. 【易实战】SpringCloud Greenwich架构概览深度详解
  7. 算法:Jump Game
  8. The Greatest C++ project
  9. python matplotlib画图实例
  10. Oracle 10g 数据库连接出现The Network Adapter could not establish the connection解决办法