当前位置: 首页 > news >正文

Redis 发布订阅

Redis 发布订阅

Redis 发布/订阅 (publish/subscribe) 是一种消息通信模式:发送者 (publish) 发送消息,订阅者 (subscribe) 接收消息。

Redis 客户端可以订阅任意数量的频道。

下图展示了频道 channel1,以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

在这里插入图片描述

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端(client2 、 client5 和 client1):

在这里插入图片描述

Redis 发布订阅的常用命令

  • PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道。
  • PUBSUB subcommand [argument [argument …]] 查看订阅与发布系统状态。
  • PUBLISH channel message 将信息发送到指定的频道。
  • PUNSUBSCRIBE [pattern [pattern …]] 退订所有给定模式的频道。
  • SUBSCRIBE channel [channel …] 订阅给定的一个或多个频道的信息。
  • UNSUBSCRIBE [channel [channel …]] 指退订给定的频道。

实例

以下实例演示了发布订阅是如何工作的,需要开启两个 redis-cli 客户端。

首先,打开一个客户端连接 Redis 服务器,作为订阅者接收消息。在本例子中,创建了一个订阅频道,命名为 RedisChannel:

redis 127.0.0.1:6379> SUBSCRIBE RedisChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "runoobChat"
3) (integer) 1

接着,重新开启一个 Redis 客户端,作为发送者发送消息,然后在同一个频道 RedisChannel 发布两次消息,订阅者就能接收消息:

redis 127.0.0.1:6379> PUBLISH RedisChannel "message1"
(integer) 1
redis 127.0.0.1:6379> PUBLISH RedisChannel "message2"
(integer) 1
redis 127.0.0.1:6379>

订阅者的客户端会显示如下消息:

redis 127.0.0.1:6379> SUBSCRIBE RedisChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "runoobChat"
3) (integer) 1
 1) "message"
2) "RedisChannel"
3) "message1"
 1) "message"
2) "RedisChannel"
3) "message2"

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

相关文章:

  • Windows关闭NGINX命令
  • 批量处理文件,高效分发数据:一键操作解决繁琐工作的技巧
  • 巩固学习6
  • 修改mysql locahost或者127.0.0.1弱密码问题
  • 【人工智能基础】GAN与WGAN实验
  • 网络工程师----第二十三天
  • Servlet(1)Request 请求对象
  • Vue + Echarts页面内存占用高问题解决
  • JVM-垃圾回收
  • [数据集][目标检测]狗种类检测数据集VOC+YOLO格式20578张120类别
  • 微信小程序的医院体检预约管理系统springboot+uniapp+python
  • ffmpeg静态编译 —— 筑梦之路
  • Android请求应用权限
  • 八股文之jdk源码分析
  • Pytorch Bert 中文分类 运行代码时候遇到的问题
  • 计算机毕业设计Java点播影院运营系统(源码+系统+mysql数据库+lw文档)
  • 论文阅读-ATLAS: A Sequence-based Learning Approach for Attack Investigation
  • 社区系统项目复盘-8
  • 校园论坛(Java)—— 数据报表模块
  • 《MySQL实战45讲》——学习笔记19 “SQL查一行执行慢的排查、锁等待/一致性读“【建议收藏】
  • ica1靶机(hydra爆破)
  • 一次性分清zip、gzip、bzip2、tar命令
  • Python源码剖析1-整数对象PyIntObject
  • 【论文笔记】Radatron: Accurate Detection Using Multi-Resolution Cascaded MIMO Radar
  • 网课题库接口调用方法
  • [附源码]计算机毕业设计大学生心理健康测评系统
  • Blackmagic黑魔法摄像机braw视频文件修复方法
  • 【怎么理解回流与重绘?以及触发场景】
  • Java项目:SSM共享汽车租赁平台
  • Spring框架(十一):手动实现一个@Component,讲一讲Spring的工厂后处理器
  • 集合java
  • MAML:User Diverse Preference Modeling by Multimodal AttentiveMetric Learning