Redis订阅和发布

article/2025/9/11 8:11:42

1.发布和订阅

1.1什么是发布和订阅

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

● 发布订阅:类似微信中关注公众号/订阅号,公众号/订阅号发布的文章,信息。订阅
者能及时获取到最新的内容。微博的订阅也是类似的。日常生活中听广播,看电视。都
需要有信息的发布者,收听的人需要订阅(广播、电视需要调动某个频道)。
发布订阅是一对多的关系。

● 订阅:对某个内容感兴趣,需要实时获取新的内容。只要关注的内容有变化就能立即得
到通知。多的一方。

● 发布:提供某个内容,把内容信息发送给多个对此内容感兴趣的订阅者。是有主动权,
是一的一方。

发布订阅应用在即时通信应用中较多,比如网络聊天室,实时广播、实时提醒等。滴滴
打车软件的抢单;外卖的抢单;在微信群发红包,抢红包都可以使用发布订阅实现。

1.2 Redis的发布和订阅

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(publish)发送消息,订阅者
(subscribe)接收消息。发布订阅也叫生产者消费者模式,是实现消息队列的一种方式。
在这里插入图片描述

1.3 如何实现

发布订阅的相关命令:
在这里插入图片描述
A、publish发布消息

语法:publish chanel message
作用:将message消息发送到channel频道。message是要发送的消息,channel是自定
义的频道名称(例如cctv1,cctv5),唯一标识发布者。
返回值:数字。接收到消息订阅者的数量

B、subscribe订阅频道
语法:subscribe channel[channel…]
作用:订阅一个或多个频道的信息
返回值:订阅的消息

C、unsubscribe退订频道 语法:unsubscribe channel [channel] 作用:退出指定的频道,不订阅。z 返回值:退订的告知消息

1.3.1 命令行实现

注意要启动订阅者,等待接收发布者的消息,否则订阅者接收不到消息
A、开启4个redis客户端,3个客户端作为消息订阅者,1个为消息发布者:./redis-cli
在这里插入图片描述
在发布者或其他窗口启动redis

B、让3个消息订阅者订阅某个频道主题:subscribechannel
在订阅者的三个窗口中分别启动redis客户端,redis安装目录/src下执行./redis-cli

在这里插入图片描述
C、让1个消息发布者向频道主题上发布消息:publish channel message在发布者窗口:
在这里插入图片描述
D、 然后观察消息的发布和订阅情况,在任意一个订阅窗口:
在这里插入图片描述

1.3.2 编程实现

JedisPubSub类:Jedis中的JedisPubSub类是Jedis的一个抽象类,此类定义了publish
/subscribe的回调方法,通过继承JedisPubSub类,重写回调方法。实现java中Redis
的发布订阅。当Reids发生发布或订阅的相关事件时会调用这些回调方法。只在回调方法中
实现自己的业务逻辑。

onMessage():发布者发布消息时,会执行订阅者的回调方法onMessage(),接收发布的
消息。在此方法实现消息接收后的,自定义业务逻辑处理,比如访问数据库,更新库存等。

A、订阅者SUB工程
①:新建 Java Project, 名称:MyRedisSubScribe
②:导入 jar : jedis-2.9.0.jar 加入 Build Path
在这里插入图片描述
③:定义订阅者者 RedisSubScribe ,继承 JedisPubSub

public class RedisSubScribe extends JedisPubSub {/*** 当订阅者接收到消息时回自动调用改方法 String channel--->频道的名称 String message--->发布的消息*/@Overridepublic void onMessage(String channel, String message) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("我是订阅者:订阅频道[" + channel + "],收到的消息是:[" + message + "],时间为:[" + df.format(new Date()) + "]");}public static void main(String[] args) {// 创建JedisJedis jedis = new Jedis("192.168.6.129", 6379);// 创建redisSubScribe对象RedisSubScribe redisSubScribe = new RedisSubScribe();// 从Redis订阅jedis.subscribe(redisSubScribe, "cctv6");}
}

B、 发布者工程
①:新建 Java Project 名称 MyRedisPublish
②:导入 jar : jedis-2.9.0.jar 加入 Build Path
在这里插入图片描述
③:定义发布者类。发布消息

public class MyRedisPublish {public static void main(String[] args) {// 创建JedisJedis jedis = new Jedis("192.168.6.129", 6379);jedis.publish("cctv6", "战狼2");System.out.println("发布消息完毕....");}
}

C、 执行程序
先启动订阅者,在运行发布者。
在这里插入图片描述素材来自石头老师,侵权联系删除


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

相关文章

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

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 : 指明…