Redis---订阅和发布

news2024/11/27 6:33:58

目录

  • 消息系统
  • 命令

消息系统

image-20230514151614114

​ 发布/订阅,即 pub/sub,是一种消息通信模式:发布者也称为消息生产者,生产和发送消息到存储系统;订阅者也称为消息消费者,从存储系统接收和消费消息。这个存储系统可以是文件系统 FS、消息中间件 MQ、数据管理系统 DBMS,也可以是 Redis。整个消息发布者、订阅者与存储系统称为消息系统。

​ 消息系统中的订阅者订阅了某类消息后,只要存储系统中存在该类消息,其就可不断的接收并消费这些消息。当存储系统中没有该消息后,订阅者的接收或消费将会阻塞。而当发布者将消息写入到存储系统后,会立即唤醒订阅者。当存储系统放满时,不同的发布者具有不同的处理方式:有的会阻塞发布者的发布,等待可用的存储空间;有的则会将多余的消息丢失。当然,不同的消息系统消息的发布/订阅方式也是不同的。例如 RocketMQ、Kafka 等消息中间件构成的消息系统中,发布/订阅的消息都是以主题 Topic 分类的。而 Redis 构成的消息系统中,发布/订阅的消息都是以频道 Channel 分类的。

​ Redis的发布与订阅功能可以让客户端通过广播方式,将消息(message)同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。换句话说,发布消息的客户端与接收消息的客户端两者之间没有直接联系。

命令

  1. subscribe:订阅频道
  • 格式:SUBSCRIBE channel [channel1 channel2 ······ ]

  • 功能:Redis 客户端通过一个 subscribe 命令可以同时订阅任意数量的频道。在输出了订阅了主题后,命令处于阻塞状态,等待相关频道的消息。

  • 订阅者:
    image-20230514153835162

  1. publish:向频道发送消息
  • 格式:PUBLISH channel message

  • 功能:Redis 客户端通过一条 publish 命令可以发布一个频道的消息。返回值为接收到该消息的订阅者数量。

  • 发布者:
    image-20230514153958597

  • 订阅者:
    image-20230514154106294

  1. unsubscribe:退订频道
  • 格式:UNSUBSCRIBE channel [channel1 channel2 ······ ]

  • 功能:Redis 客户端退订指定的频道。

  • 说明:如果没有频道被指定,也就是一个无参数的 UNSUBSCRIBE 命令被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订。在这种情况下,命令会返回一个信息,告知客户端所有被退订的频道。

  • 注意:redis-cli在使用subscribe(订阅频道)和psubscribe(订阅模式)这写命令后会进入阻塞状态,无法输入其他命令。详见:为什么在redis-cli 中使用了 subscribe命令后无法再执行unsubscribe等命令

  1. psubscribe:订阅模式
  • 格式:PSUBSCRIBE pattern [pattern1 pattern2 ······ ]

  • 功能:订阅一个或多个符合给定模式的频道。

  • 说明:这里的模式可以是全局通配符 * ,也可以使用选择匹配符 [ ]。例如,news.* 模式可以匹配所有以 news 开头的频道,像 news.music、news.blog、news.sport 等;而 news.[ie]t 模式则可以匹配news.it频道和news.et频道。

  • 发布者:
    image-20230514155927024

  • 订阅者:
    image-20230514155959943

  1. punsubscribe:退订模式
  • 格式:PUNSUBSCRIBE pattern [pattern1 pattern2 ······ ]

  • 功能:退订一个或多个符合给定模式的频道。

  • 说明:这里的模式可以是全局通配符 * ,也可以使用选择匹配符 [ ]。如果没有频道被指定,其效果与 SUBSCRIBE 命令相同,客户端将退订所有订阅的频道。

pubsub:查看发布与订阅的相关信息

  1. pubsub channels:查看所有被订阅的频道
  • 格式:PUBSUB CHANNELS [pattern]
  • 功能:列出当前所有的活跃频道。活跃频道指的是那些至少有一个订阅者的频道。
  • 说明:pattern 参数是可选的。如果不给出 pattern 参数,将会列出订阅/发布系统中的所有活跃频道。如果给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活跃频道。
    image-20230514163317432
  1. pubsub numsub:查看频道的订阅者数量
  • 格式:PUBSUB NUMSUB [channel1 channel2 ······ ]
  • 功能:返回给定频道的订阅者数量。不给定任何频道则返回一个空列表。
    image-20230514163814004
  1. pubsub numpat:查看被订阅模式的总数量
  • 格式:PUBSUB NUMPAT
  • 功能:查询当前 Redis 所有客户端订阅的所有频道模式的数量总和

发布一个订阅模式:
image-20230514164035434

检测到一个订阅模式:
image-20230514164353571

终止一个订阅模式:
image-20230514164431226

没有检测到订阅模式:
image-20230514164534334

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

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

相关文章

安全多方计算:安全定义

参考文献:《密码协议》课程 PPT 文章目录 UM & AM安全定义编译器 Semi-honest & Malicious安全定义半诚实模型恶意模型 编译器Input-CommitmentAugmented Coin-TossingAuthenticated Computation编译器框架 UM & AM 安全定义 异步网络下的多方协议&am…

关于 Kafka 分区程序的关键细节

Apache Kafka 是当今事件流的事实标准。Kafka 如此成功的部分原因是它能够处理大量数据,每秒吞吐量达到数百万条记录,这在生产环境中并非闻所未闻。Kafka设计的一部分使这成为可能,那就是分区。 Kafka 使用分区将数据负载分散到集群中的代理…

UFT描述性编程及综合练习

1、录制登录操作改描述性编程。 登录的用户名、密码在global表中给出。有2组:自己的学号/mercury,自己的学号/123456。将登录的本地对象库清空。 要求: 分别采用直接描述性编程和Description描述性编程实现2组数据登录测试,用repo…

pikvm系统主要软件包解析备忘

PI-KVM让普通家用PC也有能够像数据中心机房里面的IP-KVM一样的功能。 详细信息参考官网:PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/ nullOpen and inexpensive DIY IP-KVM based on Raspberry Pi - GitHub - pikvm/pikvm: O…

LeetCode - 34 在排序数组中查找元素的第一个和最后一个位置

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) 题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在…

【项目笔记】若干基本社团发现算法介绍

两个衡量指标:边介数 & 模块度 边介数计算: 以下用图来自:https://blog.csdn.net/weixin_44704845/article/details/102686597 选择S为源节点对图搜索,画出S到其他节点的最短路径树 2.给边标数字 1) 所有邻近叶…

【YOLO系列】--YOLOv4超详细解读/总结(网络结构)

YOLOv4(YOLOv4: Optimal Speed and Accuracy of Object Detection)(原文+解读/总结+翻译) 系列文章: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总结_耿鬼…

软件测试面试至今0 offer,问题到底出在哪儿?

转眼已是四月中旬,求职招聘季也快要结束啦,如果没点真技术 真本事,不了解点职场套路,在今年行情下,找工作可是难上加难。 现在点开微博或者脉脉,只要搜索“招聘”,用“惨不忍睹”来形容也不为过…

【数据结构】经典排序

【数据结构】八大排序 1. 排序的概念和运用1.1 概念1.2 运用 2. 常规的排序算法介绍一. 插入排序1.1 直接插入排序1.2 希尔排序 二. 选择排序2.1 选择排序2.2 堆排序 三. 交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoare法3.2.2 挖坑法3.2.3 前后指针/左右指针法3.2.4 分治法/递归…

windows11 安装 webassembly,遇到的各种错误

1.最开始是尝试在 虚拟机 centos 7 安装的(因为不想安装vs2015) 但是无奈 各种错误.最终无法解决. 2.尝试在windows安装,吐槽一下官方文档 的安装提示是错误的(太老了) 参考以下文章: https://blog.csdn.net/weixin_45482422/article/details/119459918 https://blog.csdn.…

C++中this指针的特性,存放位置,能否为空?

文章目录 一、this指针的特性二、this指针存在哪里?三、this指针可以为空吗? 一、this指针的特性 我们学习过C知道,成员函数没有直接存放在类而是放在了公共代码区,这样当多个对象调用同一个函数就不需要再创建一个函数成员了。 …

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区?2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…

全面解析Linux指令和权限管理

目录 一.指令再讲解1.时间相关的指令2.find等搜索指令与grep指令3.打包和压缩相关的指令4.一些其他指令与热键二.Linux权限1.Linux的权限管理2.文件类型与权限设置3.目录的权限与粘滞位 一.指令再讲解 1.时间相关的指令 date指令: date 用法:date [OPTION]… [FOR…

缓冲区的flip

流和缓冲区都是用来描述数据的。计算机中,数据往往会被抽象成流,然后传输。比如读取一个文件,数据会被抽象成文件流;播放一个视频,视频被抽象成视频流。处理节点为了防止过载,又会使用缓冲区削峰&#xff0…

巴西大神开发的 ARPL 黑群晖DSM系统引导在线编译工具

ARPL 是一款黑群晖系统引导在线编译工具,目前支持最新群晖系统DSM 7.1.1,今天为了折腾升级这个群晖系统DSM 7.1.1浪费了一天的时间,ARPL是巴西人一位大神开发的黑群晖系统引导在线编译工具,使用下来非常的不错,可惜没有…

3网络互联-3.4【实验】【计算机网络】

3网络互联-3.4【实验】【计算机网络】 前言推荐3网络互联3.4 IP分组转发与静态路由实验目的实验内容及实验环境实验原理1.路由器2.路由(Routing)3.IP分组的转发4.路由的构建5.静态路由设计原则 实验过程1.搭建一个仅包含直连路由的网络拓扑,观察路由器的…

时间序列分析

一、移动平均法 1.一次移动平均法 公式: 预测标准误差: 本质:用前N次数据预测t1期的数据 规律:如果实际数据波动较大,N值越大,预测到的数据波动越小 注意:一般不适用于波动较大的数据。用一次移动平均法…

Kafka原理之消费者

一、消费模式 1、pull(拉)模式(kafka采用这种方式) consumer采用从broker中主动拉取数据。 存在问题:如果kafka中没有数据,消费者可能会陷入循环中,一直返回空数据 2、push(推)模式 由broker决定消息发送频率,很难适应所有消费者…

【MySQL】 InnoDB

学习笔记,来源黑马程序员MySQL教程 文章目录 逻辑存储结构架构内存架构磁盘结构后台线程 事务原理概述redo logundo log MVCC基本概念实现原理1、隐藏字段2、undo log3、readview 总结 逻辑存储结构 一个表空间对应一张表一 页 对应B树上一个 节点Trx id&#xff1a…

Git cat命令的用法

cat (全称 concatenate) 命令是 Linux/类 Unix 操作系统中最常用的命令之一。cat 命令允许我们创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出。 语法: cat [OPTION] [FILE]...1.终端查看一个文件内容 cat file01.txt2.终端查看多个文件…