Redis---订阅和发布

article/2025/9/11 6:29:49

目录

  • 消息系统
  • 命令

消息系统

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://chatgpt.dhexx.cn/article/UPmxBq9x.shtml

相关文章

Redis:Redis消息的发布与订阅(了解)

为了实现客户端的通信,提供了频道的概念 1.Redis发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。 Redis发布订阅示意图 图一:消息订阅者…

Spring boot整合Redis实现发布订阅(超详细)

Redis发布订阅 基础知识相关命令订阅者/等待接收消息发布者/发送消息订阅者/成功接收消息常用命令汇总 原理Spring boot整合redis导入依赖Redis配置消息封装类(MessageDto)Redis配置类测试类订阅方实现一:RedisMessageListener订阅方实现二&a…

【redis】发布和订阅消息

1.说明 在Redis2版本之后支持发布订阅功能,发布者创建一个频道,并在上面发送消息,所有订阅该频道的客户端都能收到消息(不出意外的情况下,但实际不一定),发布订阅的好处是减少不必要的轮询&…

Redis的发布订阅模式

本文源码参看:https://github.com/duktig666/learn-example/tree/5586febea31c2fb368e19fbdba11ed08afd463e0/Redis/src/main/java/cn/duktig/pubsub Redis发布订阅概述 Redis 发布订阅 (publish/subscribe) 是一种消息通信模式:发送者 (pub) 发送消息…

Redis订阅和发布

1.发布和订阅 1.1什么是发布和订阅 发布订阅是一种应用程序(系统)之间通讯,传递数据的技术手段。特别是在异构(不 同语言)系统之间作用非常明显。发布订阅可以是实现应用(系统)之间的解耦合。…

Redis数据库的订阅发布

大家好,今天分享一下redis的订阅发布 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 (比如说,你在一个一个网站上面可以关注…

Redis订阅和发布(实操教学)

什么是Redis发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。 例1:client2,client5,client1订阅了频道channel1 例2:有新消息通过p…

Redis消息订阅发布

Redis的发布订阅(pub/sub)是一种 消息通信模式 : 发送者(pub)发送消息,订阅者(sub)接收消息 redis客户端可以订阅任意数量的频道 消息发送者 频道 消息接收者 redis频道 channel1 以及订阅这个频道的客户端client2 ; client5 ; client1 之间的关系 当有新消息通过PUBLISH 命…

Redis:发布订阅机制

参考资料: 《Redis进阶——发布订阅详解》 《Redis 发布订阅》 《Redis进阶 - 消息传递:发布订阅模式详解》 写在开头:本文为学习后的总结,可能有不到位的地方,错误的地方,欢迎各位指正。 目录 一、什…

redis发布订阅

目录 一、概要 二、特点 三、发布及订阅功能 四、Redis发布订阅命令 五、php实现redis发布-订阅 1、消息发布端 2、消息订阅端 六、订阅发布使用场景 七、在订阅时遇到错误 八、模式匹配(正则匹配)订阅 一、概要 Redis发布订阅(pub/sub)是一种…

springboot 整合使用redis发布订阅功能

前言 发布订阅作为一种设计思想在很多开源组件中都有体现,比如大家熟知的消息中间件等,可谓把发布订阅这一思想体现的淋漓尽致了; 一、redis发布订阅简介 Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收信息。可以参考下面两张图进…

Redis进阶——发布订阅详解

什么是发布订阅? Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 的 subscribe 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发…

Redis 的发布与订阅

3、Redis 的发布与订阅 3.1、发布与订阅简述 Redis提供了基于“发布/订阅”模式的消息机制。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可…

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 使用地址和端口过滤 …