Redis 发布订阅

news2024/10/7 2:25:18

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++服务器

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

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

相关文章

李沐论文精度系列之八:视频理解论文串讲

文章目录一 、前言二、 DeepVideo(IEEE 2014)2.1 模型结构2.2 实验结果2.3 总结三、双流网络及其变体3.1 Two-Stream(NeurIPS 2014)3.1.1 简介3.1.2 改进工作3.2 Two stream LSTM(CVPR 2015 )3.2.1 模型结构…

Django的学习笔记

Django初笔记一、认识Django1.基本原理2.框架二、建立一个简单的项目1.建立一个HelloWord(1)进入虚拟环境(2)建立项目三、基本应用结构(1)配置文件setting(2)URL(路由系统…

【C语言进阶(NEW)】一、数据储存详解|数据类型介绍|整形在内存中的存储|浮点型在内存中的存储

目录 一、数据类型介绍 1.1 基本内置类型 1.2 类型的基本归类 1.3 有符号(signed)与无符号(unsigned)的区别 二、整形在内存中的存储 2.1 原码、反码、补码 2.2 大小端 2.2.1 什么是大小端 2.2.2 为什么有大端和小端 2.…

Dubbo(分布式框架·上)

Dubbo上一、导入1、基础知识1.1、什么是分布式系统1.2、发展演变1.2.1 单一应用架构1.2.2分布式应用架构1.2.3 流动计算架构1.3 RPC1.3.1 什么是RPC1.3.2 RPC核心模块二、Dubbo概念三、设计架构四、环境搭建4.1 Zookeeper注册中心4.2 测试Zookeeper4.1 监控中心五、测试5.1 需求…

论文阅读-ATLAS: A Sequence-based Learning Approach for Attack Investigation

论文代码: https://github.com/purseclab/ATLAS 代码预处理写的太乱了,很多预处理过程都不是特别合理。不过这篇论文思想还是挺合理的,相比其实溯源图工作在路径上的处理更加合理一些。 背景简介 高级可持续威胁攻击(Advanced P…

AXI VDMA回环测试

Block Design 搭建如下图所示的硬件系统: 该硬件系统的数据流向为: DDR–>AXI VDMA–>AXI DATA FIFO–>AXI VDMA–>DDR 即将一幅图像由一段地址空间搬运至另一段地址空间。 其中,AXI VDMA配置如下: 地址位宽32&…

[附源码]Python计算机毕业设计SSM健身房管理系统 (程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

认识3dmax 轴心

轴心,pivot; 资料对轴心的说明如下, 物体轴心 每个物体有且仅有一个轴心, 轴心位置确定了物体的位置, 物体旋转是围绕轴心旋转的; 轴心,我没看到说是一个点或一条线;在三维空间应…

什么样的护眼灯适合孩子用?真正适合孩子的护眼台灯

在现在这个时代,科技的更新迭代,我们生活水平得到提高,在灯具行业也是越来越多样化了,作为家长的,希望能买到适合孩子的护眼灯,那么在那么多种类的台灯中,什么样的适合孩子呢?这次主…

虹科方案|用Western Digital和ATTO技术优化SMR存储解决方案的负载

​ 一、引言 Western Digital 与 ATTO Technology 的长期合作基于对当今复杂企业环境的存储和数据基础设施需求的共同洞察。我们正在共同为用户准备迎接下一波性能挑战。 二、背景 随着动态数据过渡到静态数据,存储成为关键基础架构组件之一。然而,以…

【教学类-21-01】20221205《青花茶杯-A4纸插入式纸盒》(大班主题《我是中国人》)

展示效果: 单张效果 多张效果 隐藏的部分 信息: 1.右侧第1列:幼儿园名字; 2.右侧第3列,幼儿名字 (1)3个名字印 (为了统一4字) (2)2个名字印…

初识多线程编程

文章目录一、线程线程与进程的区别二、多线程编程Thread创建线程的方法一、线程 我们开始引入进程,最主要的目的是去解决"并发编程"的问题,电脑进入了多核心,想要提高程序执行速度,就得将这些核心用起来。 我们在每次…

【vue3】代码格式化和volar卡顿问题解决

一、格式化策略 用eslint做代码检查和格式化是很方便的东西; 这里我们使用vscode完成这些操作; 在代码保存的时候,顺便完成格式化操作 1)装上eslint和prettier插件 2)装完插件之后,我们需要配置一下 打开 文件 > 首选项 >…

「Whale Cast」功能更新,让全网看到您的直播高光时刻

直播为王的时代,品牌如何在直播中增强运营能力,降本增效? 11 月,「帷幄开播 Whale Cast」迎来新的功能更新,一起来看一看,它将为您的直播间运营优化带来哪些强大助力。 我们将分别按智能裁切、直播场控、直…

springboot定义统一的异常返回格式(全局,特定,自定义)等

一 设置全局统一的返回格式 1.1 没有加全局异常处理 1.这里设置一个字符串为空指针异常,然后看看返回给前端的信息。 2.返回结果 3.效果看起来不友好的提示 1.2 添加全局异常处理 1.代码:添加一个全局异常处理类 ControllerAdvice public class Glo…

MySQL存在这么多的数据引擎 , 所有的引擎都在使用吗

一 . 前言 总是看到有说MySQL某个数据引擎哪里哪里有问题的 , 让我一度怀疑我是不是Mysql 用的不对 , 有些问题都没有遇到过,所以我非常好奇 , 数据库的存储引擎 , 大家真的在用吗? MySQL 官方文档:: MySQL 5.7 Reference Manual :: 15 Alternative Storage Engi…

[附源码]计算机毕业设计基于springboot学习互助辅助系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

JavaScript高级程序设计 第4版 --表单脚本

表单脚本 1、基础  acceptCharset:服务器可以接收的字符集,等价于 HTML 的 accept-charset 属性。 action:请求的 URL,等价于 HTML 的 action 属性。 elements:表单中所有控件的 HTMLCollection。 enctype&a…

详解设计模式:状态模式

状态模式(State Pattern)也被称为状态机模式(State Machine Pattern),是在 GoF 23 种设计模式中定义了的行为型模式。 在状态模式 类的行为是基于它的状态改变的。在状态模式中,我们创建表示各种状态的对象…

9.图片分类数据集

1. 图像分类数据集 MNIST数据集 [LeCun et al., 1998] 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from t…