【redis】redis发布/订阅模型

1、基本概念

  • Redis 发布/订阅模型(Pub/Sub, Publish/Subscribe)是 Redis 提供的一种消息通信模式,它允许发送者(发布者)发送消息到一个或多个频道(channel),而接收者(订阅者)可以订阅一个或多个频道,以便接收发送到这个频道的消息。
  • 发布者(Publisher):发送消息到频道的客户端。
  • 订阅者(Subscriber):接收频道消息的客户端。
  • 频道(Channel):一个字符串标识符,用于区分不同的消息类别或主题。

2、主要命令

  • SUBSCRIBE channel [channel ...]:订阅一个或多个频道。一旦有消息发送到被订阅的频道,订阅者就会收到该消息。
  • UNSUBSCRIBE [channel [channel ...]]:取消订阅一个或多个频道。如果没有指定频道,则取消订阅所有已订阅的频道。
  • PSUBSCRIBE pattern [pattern ...]:使用模式订阅。与SUBSCRIBE类似,但允许使用模式(如news.*)来匹配多个频道。
  • PUNSUBSCRIBE [pattern [pattern ...]]:取消使用模式订阅的频道。
  • PUBLISH channel message:向指定频道发送消息。所有订阅了该频道的客户端都会收到这个消息。

3、工作原理

  • 当客户端使用SUBSCRIBEPSUBSCRIBE命令订阅频道或模式时,Redis 会将客户端和频道或模式进行关联。
  • 当有客户端使用PUBLISH命令向某个频道发送消息时,Redis 会查找所有订阅了该频道的客户端,并将消息发送给它们。
  • 订阅者不需要一直在线等待消息。它们可以在任何时间订阅或取消订阅频道,并且只会在连接时接收发送到频道的消息。

4、应用场景

  • 实时通知:例如,在社交应用中,当某个用户发布了新的动态时,可以使用 Redis 发布/订阅模型来实时通知其他关注了该用户的用户。
  • 消息队列:虽然 Redis 本身不是专门为消息队列设计的,但其发布/订阅模型可以用于实现简单的消息队列系统。但请注意,由于 Redis 不提供消息确认机制,因此它可能不适合需要严格保证消息可靠性的场景。
  • 分布式系统中的事件驱动编程:在分布式系统中,不同的服务或组件之间可以通过 Redis 发布/订阅模型来交换事件和通知,以实现事件驱动的编程模式。

5、注意事项

  • 消息不持久化:Redis 发布/订阅模型中的消息是即时的,不会被持久化到磁盘上。一旦消息被发送,并且所有的订阅者都接收到了消息,那么这条消息就会从 Redis 中消失。
  • 无消息确认机制:与许多消息队列系统不同,Redis 发布/订阅模型没有消息确认机制。发送者无法知道订阅者是否成功接收到了消息。
  • 频道命名:频道的命名应该具有明确的语义,以便发送者和订阅者能够清晰地理解其用途。
  • 模式订阅:使用PSUBSCRIBEPUNSUBSCRIBE命令可以实现基于模式的订阅,这使得订阅者能够订阅多个具有相似名称的频道。
  • 性能考虑:在高并发场景下,大量的发布和订阅操作可能会对 Redis 服务器的性能产生影响。因此,在设计系统时需要权衡消息通信的需求和 Redis 服务器的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动手RAG: ocr调研

对于rag应用来说,文档是第一步,对于部分扫描件的文件来讲,主要就需要OCR. OCR tesseractppocrmmocr OCR包含几类, 自然场景中的文字识别,文档中的文字识别pipeline: 文本检测,文本识别,文…

武汉星起航:无锡跨境电商加速“出海”,物流升级助品牌全球布局

随着全球化的不断深入,跨境电商作为数字外贸的新业态,正逐渐成为无锡企业拓展海外市场的重要渠道。武汉星起航关注到,近年来,无锡市通过积极推进国际物流枢纽建设,完善海外仓布局,以及各特色产业带的积极参…

19184 传球游戏

这是一个经典的动态规划问题,我们可以定义一个二维数组dp[i][j],其中i表示传球的次数,j表示球当前在哪个同学手里。我们需要找到的是dp[m][1],即球传了m次后又回到1号同学手里的方法数。 我们可以从1次开始,逐次计算每…

老师怎样一键发布期末考试成绩?

期末考试的钟声一响,老师们便开始了紧张的阅卷工作。成绩出来后,他们又面临着一项繁琐的任务——将成绩单逐一私信给每位学生的家长。这不仅耗费了大量时间,也让老师们在繁忙的期末工作中倍感压力。期末老师的工作已经够多够繁琐,…

10款优秀的企业防泄密软件推荐 (干货必看)

在当今日益数字化的商业环境中,企业数据的安全性和保密性显得尤为重要。随着网络攻击和数据泄露事件的频发,越来越多的企业开始关注并投入资源于防泄密软件的使用。本文旨在为读者推荐10款优秀的企业防泄密软件,帮助企业在保护敏感信息方面做…

LabVIEW风机跑合监控系统

开发了一种基于LabVIEW的风机跑合监控系统,提高风机测试的效率和安全性。系统通过自动控制风机的启停、实时监控电流和功率数据,并具有过流保护功能,有效减少了人工操作和安全隐患,提升了工业设备测试的自动化和智能化水平。 项目…

轻松创建对象——简单工厂模式(Python实现)

1. 引言 大家好,又见面了!今天我们要聊的是设计模式中的“万能钥匙”——简单工厂模式。想象一下,如果每次你都得亲自动手创建各种对象,不仅累得像个陀螺,还可能搞得一团糟。别怕,简单工厂模式来拯救你&am…

SciencePub学术刊源 | 7月SCI/SSCI/EI/CNKI刊源表已更新!(内含TOP及CCF推荐)

【SciencePub学术】我处SciencePub学术2024年7月SCI/SSCI/EI/CNKI刊源表已更新!内含多本中科院TOP、CCF推荐以及进展超顺的优质期刊,最快1-3个月录用! 计算机领域重点SCI 环境地质化学领域重点SCI 生物医学领域重点SCI 数学材料领域重点SCI 各…

grpc学习golang版( 二、入门示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写Clie…

不用找了!这个软件自带各行业话术,客服效率飞跃

有一款客服工具软件,不但能吸附聊天窗口,实现图文视频话术的一键发送,还内置了多行业的优质客服话术模板,允许用户直接下载使用,快速构建起适合自身企业的专业客服知识库。 前言 在今天的快节奏商业环境中&#xff0c…

同星TTS系列产品全新亮相:让开发测试变得更简单!

TTS系列产品 如果需要完整地测试 ECU,不仅需要将通信网络连接到测试系统,还需要连接 I/O 接口。同星的TTS测试系统将连接 I/O 通道所需的所有电路组件集成在一个模块中,可以极大地简化测试台架和HIL测试系统的设置,提高搭建和测试…

使用工业自动化的功能块实现大语言模型应用

大语言模型无所不能? 以chatGPT为代表的大语言模型横空出世,在世界范围内掀起了一场AI革命。给人的感觉似乎大模型语言无所不能。它不仅能够生成文章,图片和视频,能够翻译文章,分析科学和医疗数据,甚至可以…

当下环境下如何提升自己以拥抱未来的机会-程序员的自我提升

一、前言 看看今年的行情,无论是国内还是国外,仿佛都没有什么活力,经济下行压力越来越大,企业经营越来越困难。对于程序员的工作机会越来越少。这可能是现阶段乃至几年内的现象。现在是现金为王,拥有其他资产仿佛没有多大的增值空间,经济一片惨淡,消费不活跃,我看到的…

nextTick实现原理及使用场景

1.定义: nextTick是一个在Vue.js中常见的异步更新DOM的机制,它利用JavaScript的事件循环机制以及浏览器的渲染流程来实现延迟执行DOM更新操作。nextTick方法能够将回调函数延迟到下一个DOM更新循环之后执行,确保在DOM更新完成后执行某些操作…

为什么要学习大模型应用开发?原因80%的人都不知道

0 prompt engineer 就是prompt工程师它的底层透视。 1 学习大模型的重要性 底层逻辑 人工智能大潮已来,不加入就可能被淘汰。就好像现在职场里谁不会用PPT和excel一样,基本上你见不到。你问任何一个人问他会不会用PPT,他都会说会用&#x…

已解决java.security.acl.NotOwnerException:在ACL中尝试执行非所有者的操作的正确解决方法,亲测有效!!!

已解决java.security.acl.NotOwnerException:在ACL中尝试执行非所有者的操作的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 用户类和ACL初始化 报错原因 解决思路 解决方法 1. 验证所有者身份 示…

CID引流电商:助力传统电商突破重围实现持续增长

摘要:面临流量成本攀升和市场份额被挤压的挑战,传统电商急需突破重围。CID引流电商通过跨平台引流和精准定位,助力商家实现持续增长,丰富营销手段,创新商业模式。CID引流电商为传统电商的长远发展注入新动力。 在电商…

Navicat报错码:2002 - Can‘t connect to server on localhost‘ (10061)如何解决?

许久没打开数据库,今天一看,怎么数据库连接失败了,网上查找资料后,解决了! 希望能帮到你。 报错码:2002 - Cant connect to server on localhost (10061) 报错场景:Navicat连接数据库时报错 …

[图解] 向量数据库之何谓乘积量化器?

Product Quantization 在前面一节讲解了向量数据库索引相关的内容,那么本节将会讲解其中压缩方法的量化手段:乘积量化器。 简单来说将向量的所有维度划分为多个子空间,每个子空间一部分维度,然后每个子空间独立去找最近距离。例如…

LeetCode-刷题记录-二分法合集(本篇blog会持续更新哦~)

一、二分查找概述 二分查找(Binary Search)是一种高效的查找算法,适用于有序数组或列表。(但其实只要满足二段性,就可以使用二分法,本篇博客后面博主会持续更新一些题,来破除一下人们对“只有有…