Redis 的发布与订阅

article/2025/9/11 9:18:29

3、Redis 的发布与订阅

3.1、发布与订阅简述

Redis提供了基于“发布/订阅”模式的消息机制。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可以收到该消息,如图1所示。Redis提供了若干命令支持该功能,在实际应用开发时,能够为此类问题提供实现方法。

3.2、发布与订阅架构

Redis 提供了发布订阅功能,可以用于消息的传输,Redis 的发布订阅机制包括三个部分:发布者,订阅者和 Channel。

发布者和订阅者都是 Redis 客户端,Channel 则为 Redis 服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。

Redis 的这种发布订阅机制与基于主题的发布订阅类似,Channel 相当于主题。

1、客户端可以订阅频道如下图

在这里插入图片描述

2、当给这个频道发布消息后,消息就会发送给订阅的客户端

在这里插入图片描述

3.3、使用场景

聊天室、公告牌、服务之间利用消息解耦都可以使用发布订阅模式。

下面以简单的服务解耦进行说明。如图2所示,图中有两套业务,上面为视频管理系统,负责管理视频信息;下面为视频服务面向客户,用户可以通过各种客户端(手机、 浏览器、 接口) 获取到视频信息。

假如视频管理员在视频管理系统中对视频信息进行了变更,希望及时通知给视频服务端,就可以采用发布订阅的模式,发布视频信息变化的消息到指定频道,视频服务订阅这个频道及时更新视频信息,通过这种方式可以有效解决两个业务的耦合性。

3.4、发布与订阅命令

3.4.1、订阅消息

127.0.0.1:6379> subscribe channel [channel ...]
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel"
3) (integer) 1		# 返回值为当前已订阅的频道数量# 以下是客户端接收到的订阅消息
1) "message"
2) "channel"
3) "hello"

3.4.2、发布消息

127.0.0.1:6379> publish channel "hello"
(integer) 1		# 返回值为订阅当前频道的客户端数量

3.4.3、按模式订阅频道

127.0.0.1:6379> psubscribe pattern [pattern ...]

每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 开头的频道( news.it 、news.global.today 等),诸如此类。

3.4.4、退订频道

127.0.0.1:6379> unsubscribe pattern [pattern ...]
# 返回值为当前客户端订阅的频道和模式的数量

3.4.4、按模式退订频道

127.0.0.1:6379> punsubscribe pattern [pattern ...]
# 返回值为当前客户端订阅的频道和模式的数量

有关订阅命令有两点需要注意:

  1. 客户端在执行订阅命令之后进入了订阅状态,只能接收 subscribe、psubscribe、 unsubscribe、 punsubscribe 的四个命令。
  2. 新开启的订阅客户端,无法收到该频道之前的消息,因为 Redis 不会对发布的消息进行持久化。

3.5、Redis发布订阅与ActiveMQ的比较

  1. ActiveMQ 支持多种消息协议,包括 AMQP,MQTT,Stomp 等,并且支持 JMS 规范,但 Redis 没有提供对这些协议的支持;
  2. ActiveMQ 提供持久化功能,但 Redis无法对消息持久化存储,一旦消息被发送,如果没有订阅者接收,那么消息就会丢失;
  3. ActiveMQ 提供了消息传输保障,当客户端连接超时或事务回滚等情况发生时,消息会被重新发送给客户端,Redis 没有提供消息传输保障。

参考链接:
https://blog.csdn.net/fly910905/article/details/78495971
https://blog.csdn.net/feiying0canglang/article/details/122838728


http://chatgpt.dhexx.cn/article/AEoMaTAj.shtml

相关文章

6. Redis 发布与订阅

文章目录 6. Redis 发布与订阅为什么需要发布、订阅发布/订阅如何使用? :one:基于频道发布SUBSCRIBE:频道订阅PUBLISH:向频道发送消息UNSUBSCRIBE:退订频道 :two: 基于模式(pattern)的发布/订阅PSUBSCRIBE:模式订阅PUB…

Redis的发布订阅

Redis的发布订阅(pub/sub)是一种消息通信模式,发送者(pub)发送信息,订阅者(sub)接收信息。Redis客户端可以订阅任意数量的频道。Pub/Sub 从字面上理解就是发布(Publish&a…

Redis数据库的发布与订阅(详细讲解)

一、实验目的 了解Redis数据库的发布与订阅 二、发布与订阅 1.1什么是发布和订阅 发布订阅是一对多的关系,需要有信息的发布者和消息的收听者。 发布者:提供某个内容或主题,把内容信息发送给多个对此内容感兴趣的订阅者 订阅者&#xff…

Redis发布和订阅

一、什么是Redis发布和订阅 Redis的发布(pub)和订阅(sub)是一种消息通信模式。它包含有三个角色分别是:发送者、订阅者、频道。 Redis客户端可以订阅多个任意的频道。 Redis发布和订阅的结构图: 发送者:用于发送消息 订阅者:订阅…

Redis--发布订阅--原理/使用场景

原文网址:Redis--发布订阅--原理/使用场景_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Redis的发布订阅功能。 Redis发布订阅简述 Redis提供了基于“发布/订阅”模式的消息机制。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端…

php查netstat,netstat怎么查看端口状态

netstat查看端口状态的方法:首先打开终端命令窗口;然后通过命令“netstat -ntlp”查看当前所有tcp端口;最后通过“netstat -ntulp | grep 80”命令查看所有80端口使用情况即可。 本教程操作环境:linux5.9.8系统,DELL G…

Linux系统使用ss命令查看端口状态

Linux系统使用ss命令查看端口状态 Linux系统使用ss命令查看端口状态 目录 1.可用工具 2.ss帮助 2.1 选项分类说明 2.2 过滤选项family 2.3 过滤选项state 2.4 状态之间的关系 3.ss的使用 3.1 使用示例 3.2 过滤 3.2.1 状态过滤 3.2.2 通过family过滤 3.2.3 使用地址和端口过滤 …

Win7怎样查看端口状态

在Win7系统中,查看端口状态可以采用以下两种方法: 1.netstat 先单击“开始”,再单击“运行”,输入"cmd",进入DOS窗口。输入命令"netstat -na",按回车,就会显示本机连接情况…

Linux查看端口状态

在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询 netstat命令各个参数说明如下: -t : 指明显示TCP端口   -u : 指明显示UDP端口   -l : 仅显示…

php 查看端口配置信息,查看端口状态的命令是什么

查看端口状态的命令是“netstat”,其语法是“netstat -ntlp”,netstat命令一般用于检验本机各端口的网络连接情况,netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听等相关报告。 linux系统中查…

通过查看端口状态查看mongodb是否已经启动

LINUX环境下,可以通过查看端口27017的状态查看mongod是否已经启动。 netstat -lanp | grep "27017" 可以看到已经启动了mongod服务。 然后关闭mongod服务 sudo service mongod stop 可以看到端口状态发生了变化 再开启服务 sudo service mongod star…

Linux查看端口状态及 查看与其他主机的联通状态 命令

目录 netstat Telnet netstat 在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询 netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明…

Ubuntu开放端口及其查看端口开放状态

前言 在服务器部署应用的时候,我们经常要查看这个应用是否部署成功,而一般就是通过ip 端口的方式在浏览器上进行查看默认的一些页面是否出现当页面没有出现的情况下,不一定是应用没启动成功,可能是因为端口未开放出去&#xff0…

netstat查看端口状态

netstat(network status网络状态)命令各个参数说明如下: -t : 指明显示TCP端口,t是TCP的首字母。 -u : 指明显示UDP端口,u是UDP的首字母 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(proto…

Netstat查看端口状态,netstat命令详解

netstat命令详解 概述Netstat查看端口状态 概述 netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。 Netstat查看端口状态 1、点击左下角的【开始】,找到运行,或是直接…

聊聊linux查看服务和端口状态命令netstat

使用netstat命令可以查看linux系统中正在使用的服务和端口情况 常见参数 -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听…

linux中查看端口状态以及是否被占用的相关操作指令(netstat、isof)

linux中查看端口状态 linux中查看端口状态1、netstat1.1、查看服务器上服务和端口1.2、查看某个端口是否被占用 2、lsof:进程打开文件的相关信息2.1、列出80端口目前打开的文件列表2.2、列出所有的网络连接2.3、查看进程打开了某个文件2.4、查看某个用户打开的所有文…

绝对优势与比较优势的数学分析与其…

广义动量定理与系统思考 ——战争、管理学与经济学通论 2.4 作用点与经济学 2.4.1 作用点与比较优势 当有n国生产2种产品时,可以写出如下的带约束的函数, 其中Fi1和Fi2分别为i国生产1单位产品1和产品2所需劳动量,xi…

新-新古典综合给出的正统答案-中国视角下的宏观经济

新-新古典综合给出的正统答案-潘登同学的宏观经济学笔记 文章目录 新-新古典综合给出的正统答案-潘登同学的宏观经济学笔记 当前主流宏观经济学(新-新古典综合)的思想源流古典理论凯恩斯理论新古典综合(neoclassical synthesis)新-新古典综合(New-neoclassical synthesis) 宏观…

经济学计算机会成本,经济学思维方式之二——机会成本、经济利润

今天的内容,顺着昨天的成本收益模型,来说一说经济学里两个重要的概念——机会成本和经济利润。 首先,说说我自己跨学科学习的理念。 跨学科学习学什么?学的是匪夷所思的概念和模型,是不通过系统学习,这辈子…