Redis7【⑤ Redis 发布 订阅】

news2024/11/15 12:27:42

Redis发布和订阅

本章了解即可,命令可以不用敲。
在这里插入图片描述

Redis 发布和订阅(Publish/Subscribe,简称 Pub/Sub)是一种消息传递模式,用于在 Redis 中实现消息的发布和订阅。

在 Redis 中,发布者(Publisher)可以将消息发送到一个或多个频道(Channel),订阅者(Subscriber)可以订阅一个或多个频道,以接收发布者发送的消息。当发布者在某个频道上发布一条消息时,所有订阅该频道的订阅者都会收到这条消息。

Redis Pub/Sub 是基于消息传递的异步通信模型,可以用于构建实时系统、聊天室、实时广播等应用场景。


1. 常用命令

1.1 SUBSCRIBE

SUBSCRIBE channel [channel ...]:订阅一个或多个频道

一旦客户进入了订阅状态,客户端就只能接受订阅相关的命令SUBSCRIBE、PSUBSCRIBE、UNSUBSCRIBE和PUNSUBSCRIBE,除了这些命令,其他命令一律失效。按Ctrl+C结束订阅状态。

返回值:发布类型、频道名称、第几个频道

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vibDxXJu-1687939622643)(img/2023-04-13_215044.png)]

1.2 PUBLISH

PUBLISH channel message:发布消息到指定频道。

返回值为收到消息的客户端数量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-omthhZgV-1687939622644)(img/2023-04-13_221127.png)]

1.3 PSUBSCRIBE

PSUBSCRIBE pattern [pattern ...]:按照匹配模式批量订阅。

支持的模式有:?表示任意一个字符;*表示任意数量的任意字符;[]表示中括号中的指定字符。比如:
h?llo:可以匹配hallo、hbllo、hello…
h*llo:可以匹配hello、heeello、habcdello…
h[abc]llo:只能匹配hallo、hbllo、hcllo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgkzdVSG-1687939622644)(img/2023-04-13_224853.png)]

1.4 PUBSUB

PUBSUB 是自省命令,能够检测PUB/SUB子系统的状态。

PUBSUB CHANNELS [pattern] :返回当前活跃的频道。

只会统计使用SUBSCRIBE订阅的频道。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ay7I8RLR-1687939622644)(img/2023-04-13_230814.png)]

PUBSUB NUMSUB channel [channel ...]:返回指定频道订阅者的个数。

只会统计使用SUBSCRIBE订阅的订阅者个数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufC1MKAE-1687939622644)(img/2023-04-13_231329.png)]

PUBSUB UNMPAT:返回订阅模式(PSUBSCRIBE)的数量。

这个命令返回的不是订阅模式的订阅者数量, 而是所有Redis客户端(订阅者)订阅的所有模式的数量总和。

127.0.0.1:6379> PUBSUB NUMPAT
(integer) 2		# 包括了客户端1,客户端2,客户端3的订阅模式的数量

1.5 UNSUBSCRIBE

UNSUBSCRIBE channel [channel ...]:指示客户端退订指定频道,若没有指定频道则退订所有频道。

127.0.0.1:6379> UNSUBSCRIBE c2	# 退定频道c1
1) "unsubscribe"
2) "c1"
3) (integer) 0
127.0.0.1:6379> UNSUBSCRIBE		# 退订所有频道
1) "unsubscribe"
2) (nil)
3) (integer) 0

1.6 PUNSUBSCRIBE

PUNSUBSCRIBE pattern [pattern ...]:指示客户端退订指定模式,若没有提供模式则退定所有模式。

127.0.0.1:6379> PUNSUBSCRIBE c*		# 退定订阅模式c*
1) "punsubscribe"
2) "c*"
3) (integer) 0
127.0.0.1:6379> PUNSUBSCRIBE		# 退订所有订阅模式
1) "punsubscribe"
2) (nil)
3) (integer) 0

2. 小总结

  • 发布的消息在Redis系统不能持久化,因此必须先执行订阅,再等待消息发布,如果先发布了消息且该消息没有订阅者接收,那么该消息被直接丢弃。
  • 消息只管发送,对于发布者而言消息是即发即失的,也没有ACK机制,无法保证消息是否消费成功。
  • Redis5.0新增了Stream数据结构,不但支持多播,还支持数据持久化,比Pub/Sub更加强大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven打包所有依赖,对外提供sdk.jar

maven打包所有依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compile.source>1.8</maven.compile.source><maven.compile.target>1.8</maven.compile.target></properties><…

Swin Transformer训练报错问题

1. 训练遇到报错问题 &#xff08;1&#xff09;mportError: cannot import name _pil_interp from timm.data.transforms 原因&#xff1a; timm.data.transforms里面没有_pil_interp&#xff0c;只有str_to_pil_interp、_str_to_pil_interpolation、_pil_interpolation_to_s…

rancher 节点重启无感发布

这里设置 时间 为120s &#xff0c;保证 新节点起来后&#xff0c;和 老节点并行2分钟后再剔除&#xff0c;老节点

el-select修改样式

目录 准备 修改placeholder颜色 修改右侧箭头 修改圆角边框 准备 <el-select v-model"goodsId" clearable placeholder"请选择" :popper-append-to-body"false"><el-option v-for"item in kindList" :key"item.value…

浙江宇视科技 网络视频录像机 ISC LogReport.php 远程命令执行漏洞

免责声明 文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得危害网络安全&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机…

Vue Router activated deactivated 路由守卫

6.12.activated deactivated activated和deactivated是路由组件所独有的两个钩子&#xff0c;用于捕获路由组件的激活状态具体使用 activated路由组件被激活时触发deactivated路由组件失活时触发 src/pages/News.vue <template><ul><li :style"{opacity}…

1.2-程序设计语言与流程图基础

一、学习目标 了解计算机程序与程序设计语言。认识算法和流程图。理解计算机程序、程序设计语言、算法与流程图之间的关系。 1、计算机程序 计算机程序是人们使用指定的程序设计语言&#xff0c;根据需要事先编写的一系列控制计算机工作的命令。2、程序设计语言 程序设计语…

如何避免死锁:方法一

需要先看前文&#xff1a;死锁的产生_御坂美琴1的博客-CSDN博客 对两个资源使用一把锁。即小朋友玩敲鼓的时候会同时拿走鼓和鼓槌。 如图&#xff1a; 可以看到“线程1执行了&#xff0c;但是线程2没有执行&#xff0c;还在被阻塞着。为什么线程1运行完毕&#xff0c;线程2还没…

解决sourcetree中推送不显示分支 - 软件篇

问题&#xff1a; 如上图所示&#xff0c;在我们使用sourcetree推送我们的代码时 推送的弹窗里不回显示我们的分支&#xff1b; 众所周知&#xff1a;在我们没有新创建分支的情况下&#xff0c;他会默认有一个master分支&#xff0c;这也是我们的主分支 在网上搜这个问题&…

61 KVM Skylark虚拟机混部-使用及最佳实践

文章目录 61 KVM Skylark虚拟机混部-使用及最佳实践61.1 使用Skylark61.1.1 启动服务61.1.2 创建虚拟机61.1.3 虚拟机运行 61.2 最佳实践61.2.1 虚拟机业务推荐61.2.2 虚拟机绑核配置 61 KVM Skylark虚拟机混部-使用及最佳实践 61.1 使用Skylark 61.1.1 启动服务 初次启动&a…

Spring MVC的工作原理

1.Spring MVC的工作原理 1.浏览器发送请求&#xff0c;DispatcherServlet拦截请求 2.DispatcherServlet将需要先调用HandlerMapping通过uri找到能够处理请求的Handler&#xff0c;然后将请求涉及到的Handler封装 3.DispatcherServlet调用HandlerAdapter适配执行Handler 4.H…

LeetCode 打卡day45-- 单词拆分和多重背包问题

一个人的朝圣 — LeetCode打卡第45天 知识总结 Leetcode 139. 单词拆分题目说明代码说明 知识总结 今天写了一道题目, 但是还挺难的, 而且是面试高频题目 还过了一遍多重背包问题. 多重背包与01背包的区别在于多重背包限制了物品的个数, 某些物品的个数可能不为1, 可以使用两…

Java缓存简介

一、缓存 1、什么是缓存&#xff1f; 缓存是硬件&#xff0c;是CPU中的组件&#xff0c;CPU存取数据的速度非常的快&#xff0c;一秒钟能够存取、处理十亿条指令和数据&#xff08;术语&#xff1a;CPU主频1G&#xff09;&#xff0c;而内存就慢很多&#xff0c;快的内存能够达…

数据库实验-图书销售管理系统数据库安全管理

一、实验二&#xff1a;图书销售管理系统数据库安全管理 三、实验目的 了解该DBMS系统对数据库管理的内容与方法&#xff0c;特别是理解数据库安全机制和作用&#xff0c;以及PostgreSQL数据库角色管理、用户管理、权限管理的基本方法&#xff0c;培养数据库管理能力。在图书…

CV什么时候能迎来ChatGPT时刻?

卷友们好&#xff0c;我是rumor。 最近看了几篇CV的工作&#xff0c;肉眼就感受到了CVer们对于大一统模型的“焦虑”。 这份焦虑让他们开始尝试统一一切&#xff0c;比如&#xff1a; 统一复杂的自动驾驶任务的优化目标[1]&#xff0c;来自今年CVPR最佳论文。统一典型的CV任务&…

3s定时循环启动弹窗,子窗体3s后自动关闭功能实现

只贴关键代码&#xff1a; 1、父窗体关键代码 private void doAt1AM(object state){//要执行的任务&#xff0c;直接button调用即可//执行功能...的任务spring_Form spr_Form new spring_Form();spr_Form.Txt "陈先生" ";到1号窗口取药";spr_Form.Show…

WPF中的Behavior及Behavior在MVVM模式下的应用

WPF中的Behavior及Behavior在MVVM模式下的应用 在WPF中&#xff0c;Behaviors&#xff08;行为&#xff09;是一种可重用的组件&#xff0c;可以附加到任何UI元素上&#xff0c;以添加特定的交互行为或功能。Behaviors可以通过附加属性或附加行为的方式来实现。 Behavior并不…

【3Ds Max】使用捕捉工具、轴约束工具实现点的精准对齐

目录 问题 解决步骤 一、在XYZ轴上都对齐 二、只在一或两个轴上对齐 问题 举个例子&#xff0c;比如我想让如下的两个立方体的顶点对齐&#xff08;在同一位置&#xff08;XYZ轴都对齐&#xff09;&#xff0c;或仅在一个或两个轴上对齐&#xff09;&#xff1a; 主要使…

【PostgreSQL 数据库技术峰会(成都站)】云原生虚拟数仓 PieCloudDB Database 的架构和关键模块实现...

2023年6月17日&#xff0c;中国开源软件推进联盟 PostgreSQL 分会在成都举办了数据库技术峰会。此次峰会以“新机遇、新态势、新发展”为主题&#xff0c;结合当下信创热潮、人工智能等产业变革背景&#xff0c;探讨 PostgreSQL 数据库在这些新机遇下的发展前景。峰会邀请众多行…

PHP 设备管理系统 mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 设备管理系统 是一套完善的WEB设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 视频演示 PHP 设备管理系统 mysql数据库web结构apache 代码下载 https://download.csd…