Redis的高级实用特性——发布及订阅消息

Redis发布-订阅模式之Channel的发布订阅 Redis 发布订阅(Pus/Sub)是一种消息通信模式:发送者通过 publish发布消息,订阅者通过 subcribe订阅接收消息或通过unsubcribe取消订阅。主要包含三个部分组成:发布者、订阅者、Channel。发布者和订阅者属于客户端,Channel 是 Redis 服务端,发布者将消息发布到频道,订阅这个频道的订阅者则收到消息。 阅读详情

  发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub/sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息时。订阅该消息类型的全部client都会收到此消息。这里消息的传递是多对多的。一个client可以订阅多个channel,也可以向多个channel发送消息。

  下面做个实验。这里使用3不同的client, client1用于订阅tv1这个channel的消息,client2用于订阅tv1和tv2这2个chanel的消息,client3用于发布tv1和tv2的消息。



下面将详细的解释一下上面的例子

  1、client1订阅了tv1这个channel这个频道的消息,client2订阅了tv1和tv2这2个频道的消息

  2、client3 是用于发布tv1和tv2这2个频道的消息发布者

  3、接下来我们在client3发布了一条消息”publish tv1 program1”,大家可以看到这条消息是发往tv1这个频道的

  4、理所当然的client1和client2都接收到了这个频道的消息

  5、 然后client3又发布了一条消息”publish tv2 program2”,这条消息是发往tv2的,由于client1并没有订阅tv1,所以client1的结果中并没有显示出任何结果,但client2订阅了这个频道,所以client2是会有返回结果的。

  我们也可以用psubscribe tv*的方式批量订阅以tv开头的频道的内容。

  看完这个小例子后应该对pub/sub功能有了一个感性的认识。需要注意的是当一个连接通过subscribe或者psubscribe订阅通道后就进入订阅模式。在这种模式除了再订阅额外的通道或者用unsubscribe或者punsubscribe命令退出订阅模式,就不能再发送其他命令。另外使用 psubscribe命令订阅多个通配符通道,如果一个消息匹配上了多个通道模式的话,会多次收到同一个消息。

下面给出PHP的实现代码:

<?php

$redis = new Redis();
$redis->connect('127.0.0.1',6379);

$channel = $argv[1]; // channel
$msg = $argv[2]; // msg

$redis->publish('channel'.$channel, $msg);

?>

<?php

$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$channel = $argv[1]; // channel
$redis->subscribe(array('channel'.$channel), 'callback');

function callback($instance, $channelName, $message) {
 echo $channelName, "==>", $message,PHP_EOL;
}

?>




【Spring Boot 3】【Redis】集成Redisson实现消息发布订阅 Redisson区别与Lettuce和Jedis之处在于,Redisson不再是一个纯粹的Redis客户端,还提供了很多高级的分布式服务,本文介绍开发Spring Boot应用集成Redisson实现消息的发布及订阅。:定义消息主题(Topic)及消息对象类。:定时发布消息。:订阅消息。 阅读详情

相关推荐

Calibre PEX提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文深入解析Calibre PEX工具中hcell与xcell文件的协同工作机制,提供模块级寄生参数提取方案。通过实战案例和避坑指南,帮助工程师精准屏蔽已验证IP模块,提升仿真效率和数据一致性,适用于65nm以下工艺节点的复杂SoC设计。

weixin_29275257的博客 626

了解 Redis Channel:消息传递机制、发布与订阅,以及打造简易聊天室的实战应用。

本文主要介绍 Redis Channel 消息传递机制的内涵,并使用 Redis-cli 和 Python 演示了如何利用这种机制实现一个简单聊天室应用。

庸了个白's blog 2714

MoveIt避障规划实战:从点云到OctoMap的环境感知全流程

本文详细解析了MoveIt避障规划中从点云到OctoMap的环境感知全流程,重点介绍了深度相机选型、点云数据处理、OctoMap生成及避障规划参数调优等关键技术。通过实战案例展示了如何利用MoveIt和OctoMap实现机械臂在复杂环境中的高效避障,为工业自动化和服务机器人开发提供实用解决方案。

weixin_30417487的博客 568

redis订阅发布介绍

订阅者(pub)发送消息,订阅者(sub)接受消息。比如生活中的微信订阅公众号,微博关注账号。1.实时消息系统(注册相当于订阅系统频道,收到系统信息)2.实时聊天(频道当作聊天室,将信息回显给所有人即可)3、再开一个终端,去发布名称为channel的内容。redis发布订阅(pub/sub)是一种。2、通过命令订阅指定的channel。4、我们发现,订阅端已成功接收到消息。1、首先,我们进入redis客户端。

G823909的博客 1087

告别GIS软件!用R语言ggplot2+ggmapcn绘制出版级世界地图(附5种投影对比图)

本文提供了一份完整的实践指南,教你如何利用R语言及其强大的ggplot2生态系统,结合ggmapcn包,绘制出出版级的世界地图。文章详细对比了五种经典地图投影(如摩尔维德、罗宾森投影)的代码实现与视觉差异,并讲解了如何添加比例尺、指北针等专业元素,最终导出高清PDF,实现从数据分析到专业可视化的全流程代码化操作,彻底告别传统GIS软件。

p5l2m9n4o6q的博客 407

PyTorch版Unet训练后别只看loss:手把手教你计算并可视化多类别语义分割的mIoU(附完整代码)

本文详细介绍了在PyTorch中使用Unet模型进行多类别语义分割后,如何计算和可视化mIoU(mean Intersection over Union)以全面评估模型性能。通过完整的代码示例和实用技巧,帮助开发者从loss优化转向更精准的区域分割评估,特别适用于医学图像分析等关键场景。

weixin_30906185的博客 435

redis中的channel是什么?

Redis 发布/订阅是一种消息传模式,其中发送者(在Redis术语中称为发布者)发送消息,而接收者(订阅者)接收消息。在Redis中,客户端可以订阅任意数量的频道。

Li2992673708的博客 750

为什么大语言模型推理要分成 Prefill 和 Decode?深入理解这两个阶段的真正意义

Prefill 阶段是语言模型推理中的第一个步骤,它负责处理你输入的所有上下文内容(prompt),为后续生成打下基础。“请解释一下 Transformer 的原理。这句话会被 tokenizer 编码为一串 token,比如["请", "解释", "一下", "Trans", "##former", "的", "原理", "。"]。然后这些 token 会进入 Transformer 模型进行前向传播。重点来了 👇。

Harry的博客 1万+

Redis学习

Redis

zypf_lover的博客 1209

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5509

学习QT之应用程序打包发布

一、编译QT程序(release编译) 二、将release文件夹中的可执行文件复制到一个空的文件夹中 三、使用windeployqt打包工程 切换到可执行文件路径,执行windeployqt xxx.exe: 然后就会将程序所需要用到的资源以及库文件生成到可执行文件路径下: 此时应用程序就可以点击运行了。 四、使用Enigma Virtual Box封包(将文件夹内的文件集成为单可执...

贝勒里恩的博客 762

Redis高级实用特性:发布及订阅消息

在之前的文章中,介绍过Redis数据库高级实用特性中的持久化机制,今天为大家介绍Redis的另一高级实用特性——发布及订阅消息。   发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub/sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub的s...

weixin_30432579的博客 228

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

前程算法屋的博客 5593

Redis实战《红丸出品》4.5 Redis高级实用特性之发布及订阅消息

---------------------------------------------------------------------------------------------------------------- 《MongoDB管理与开发精要》、《Redis实战》作者 @CD红丸                    http://weibo.com/u/2446082491

红丸的专栏 672

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Redis高级实用特性(持久化机制、发布订阅消息、虚拟内存的使用)

持久化机制Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。 snapshotting(快照)也是默认方式 快照是默认的持久化方式。这种方式是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key被修改则自动做快照。 save 900

apple_5的博客 557

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

REDIS学习笔记(三):进阶:redis事务、发布\订阅

redis

teng_liang的博客 224

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

浅谈C# Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。

a876106354的博客 1706

redis小結

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34129145的博客 78

NOSQL之Redis学习札记

Redis是一个开源的,先进的Key-Value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合和有序集合。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中的,它可以周期性的把更新的数据写入磁盘或者把修改的操作写入追加的记录文件。

chc340121的专栏 848

【存储中间件】Redis核心技术与实战(二):Redis高级特性与应用(发布和订阅、Redis Stream)

足够简单,消费消息延迟几乎为零,但是需要处理空闲连接的问题。如果线程一直阻塞在那里,Redis客户端的连接就成了闲置连接,闲置过久,服务器一般会主动断开连接,减少闲置资源占用,这个时候blpop和brpop或抛出异常,所以在编写客户端消费者的时候要小心,如果捕获到异常,还有重试。其他缺点包括:做消费者确认ACK麻烦,不能保证消费者消费消息后是否成功处理的问题(宕机或处理异常等),通常需要维护一个Pending列表,保证消息处理确认;不能做广播模式,如pub/sub,消息发布/订阅模型;

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

Redis 发布/订阅模式与消息队列

Redis 的发布/订阅机制与消息队列功能在多个应用场景中非常有用,无论是实时通知系统还是任务调度,都能够提供高效且可靠的支持。在 C++ 中,通过hiredis库,我们能够轻松实现 Redis 发布/订阅和消息队列的功能。

人心有反复,好在山水有重逢。 1243

Redis发布订阅

一 、redis发布订阅模式队列:基于 list 结构的消息队列,是一种 Publisher 与 Consumer 点对点的强关联关系通道channel:可实现消费者订阅多个通道模式Pattern:与通道的区别是 1、模式无需完整的通道名称订阅,用模糊订阅(通过?,*来代替)二、通道与模式两者订阅模式原理实现通道:内部实现是通过(PubSub_Channel)键对值,key(数组元素)为channel,value就是某个clientPattern。

m0_55736088的博客 3766

Redis高级特性发布/订阅(Pub/Sub)

发布/订阅(Publish/Subscribe,简称Pub/Sub)是一种消息传递模式,允许消息的生产者(发布者)和消费者(订阅者)通过频道进行通信,而无需直接了解彼此的存在。发布者将消息发布到特定的频道,订阅者则订阅感兴趣的频道以接收相应的消息。这种模式实现了松耦合的组件间通信,适用于实时通知、事件驱动架构等场景。Redis的发布/订阅(Pub/Sub)模式是实现实时消息传递和事件驱动架构的重要工具,具有高性能、低延迟、易于集成等优点。

Flying_Fish_roe的博客 2630

Redis(三):Redis高级特性和应用(发布订阅、Stream)

深入探讨 Redis 中两个非常强大的消息通信机制:发布/订阅(Pub/Sub) 和 流式数据结构(Stream)。二者在设计思路、应用场景、可靠性等方面有显著差异,理解它们对于构建高性能、可靠的分布式系统至关重要。

一个程序员的自我救赎。 2655

Redis 发布订阅(Pub/Sub)机制详解

Redis 发布订阅(Publish/Subscribe)是一种实现消息多播的通信模式,包含发布者和订阅者两种角色。它具有实时推送、多播通信、频道隔离和模式匹配等核心特性

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6063
上一篇: Redis作者谈Redis应用场景
下一篇: X-Y Problem
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值