redis的 stream数据类型实现 消息队列?

news/2024/9/18 12:39:59/ 标签: redis, 数据库, 缓存

redis的 stream数据类型实现 消息队列?

redis的消息队列可以通过:

  • PUB/SUB,订阅/发布模式:缺点是发布订阅模式是无法持久化的,如果出现网络断开、Redis 宕机等,消息就会被丢弃;

  • 使用列表 List 实现:支持了持久化,但是不支持多播,分组消费等

redis 5.0 之后,新增的 Stream数据类型实现的 消息队列可以 持久化,支持多播、分组消费

Stream 数据类型的结构

每个 Stream 都有唯一的名称,它就是 Redis 的 key,在我们首次使用 xadd 指令追加消息时自动创建。

img

  • Consumer Group :消费组,使用 XGROUP CREATE 命令创建,一个消费组有多个消费者(Consumer), 这些消费者之间是竞争关系(即一个消息,只能被这个消息组中的一个消费者使用)。
  • last_delivered_id :游标,每个消费组会有个游标 last_delivered_id。它表示该消费组中当前已经处理完成的消息ID。用于记录消费者的处理进度,当消费者重新启动或恢复时,可以从这个位置继续处理未处理的消息
  • pending_ids:消费者(Consumer)的状态变量,作用是维护消费者的未确认的 id。 pending_ids 记录了当前已经被客户端读取的消息,但是还没有 ack 。它用来确保客户端至少消费了消息一次,而不会在网络传输的中途丢失了没处理。

此外,补充两点:

  • 消息ID:默认形式是timestampInMillis-sequence(时间戳-序号),用户也可以自定义,但必须是整数-整数形式。

  • 消息内容:消息内容就是键值对,形如hash结构的键值对。比如:

    在这里插入图片描述

消费组消费流程

在这里插入图片描述

  1. 消费组的消费者之间竞争去消费消息(一个消息只能被一个消费者使用);
  2. 消费者消费完成之后,会给redis服务器发送一个ACK,来让redis知道该条消息消费成功。

redis_Stream___Kafka__37">redis Stream 实现的消息队列 与 Kafka 的区别

主要是二者的使用场景:

  1. redis Stream 实现的消息队列:内存型数据库中的数据结构,更适用于相对简单的消息队列场景,性能受内存限制。
  2. kafka消息队列:专门的分布式消息队列系统,设计用于高吞吐量、大规模数据处理。

http://www.ppmy.cn/news/1524897.html

相关文章

大模型微调:RHLF与DPO浅析

大模型应用性能的提升不仅在于其预训练,而微调的作用也非常显著。对于多数从事大模型应用领域的团队而言,微调是一个核心的工作之一,为专门任务完善大模型并确保其产出符合我们的预期。 1. 关于微调 微调涉及调整预训练的LLM ,以更…

50projects50days案例代码分析学习、效果,Html+CSS+JavaScript小案例

案例来源于:https://github.com/bradtraversy/50projects50days,部分资源需要科学上网加载使用,往后不再赘述。 合集链接,欢迎订阅: https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzkwODY2OTA5NA&actiongetal…

ai智能语电销机器人有哪些功能?

近几年火爆的AI语音机器人,已经可以成熟的服务于金融贷款、理财、房地产、电商、汽车等行业,成熟的适用于电话销售、客服服务、售后管理等等基础岗位,那么ai智能语电销机器人有哪些功能?我们来看一看。 顾名思义,智能…

数据结构 栈 队列

系统栈: 保护局部变量 函数的形参和返回值 函数的调用关系(保护现场,恢复现场操作,遵循先进后出,后进先出) 数据结构栈(顺序栈,链式栈): 同样遵遵循先进…

Linux操作系统入门(一)

Linux操作系统是开源的类Unix操作系统内核,由林纳斯托瓦兹在1991年创建。 Linux操作系统以其强大的性能、稳定性和开放性,赢得了全球用户的广泛认可,从服务器到个人电脑,从超级计算机到嵌入式设备,都有它的身影。作为…

vue如何做到计算属性传参?

1.计算属性传参,还在return一个函数? let nameFull computed(() > {return e > {console.log(参数, e)} }) 那这样的话,干脆直接写一个函数 2.真正的计算属性传参,借助map实现 import { computed } from "vue&quo…

手把手教你给服务器安装及使用ESXI系统

ESXi(以前称为 ESX Server)是由 VMware 开发的一款企业级的裸机虚拟化管理程序(hypervisor)。ESXi 允许直接在物理硬件上运行,并在其上创建和管理多个虚拟机(VMs),每个虚拟机都可以运…

Python酷库之旅-第三方库Pandas(116)

目录 一、用法精讲 511、pandas.DataFrame.std方法 511-1、语法 511-2、参数 511-3、功能 511-4、返回值 511-5、说明 511-6、用法 511-6-1、数据准备 511-6-2、代码示例 511-6-3、结果输出 512、pandas.DataFrame.var方法 512-1、语法 512-2、参数 512-3、功能…

Element UI入门笔记(个人向)

Element UI入门笔记 将页面分割为一级菜单、二级菜单、导航栏三个部分;使用npm下载安装,使用语句npm i element-ui -s; 布局组件 el-form 用于创建和管理表单;从属性上看: :model:用于双向数据绑定,将表单…

3C电子胶黏剂在手机制造方面有哪些关键的应用

3C电子胶黏剂在手机制造方面有哪些关键的应用 3C电子胶黏剂在手机制造中扮演着至关重要的角色,其应用广泛且细致,覆盖了手机内部组件的多个层面,确保了设备的可靠性和性能。以下是电子胶在手机制造中的关键应用: 手机主板用胶&…

Android Framework(五)WMS-窗口显示流程——窗口布局与绘制显示

文章目录 relayoutWindow流程概览应用端处理——ViewRootImpl::setView -> relayoutWindowViewRootImpl::setViewViewRootImpl::performTraversalsViewRootImpl::relayoutWindow Surface的创建WindowManagerService::relayoutWindow了解容器类型和Buff类型的SurfaceBuff类型…

调接口某个属性信息为null

1、问题描述 通过feign调用别的系统接口,发现有个属性,获取的值始终是null。 找接口提供方,提供方自测接口,是有返回值的。 2、问题排查 接口调用过程如图: (1)接口提供方开发接口test (2) …

【渗透测试】——DVWA靶场搭建

📖 前言:DVWA(Damn Vulnerable Web Application)是一个用于安全漏洞测试的 PHP/MySQL 网络应用,旨在为安全专业人士提供一个合法的环境,以测试他们的技能和工具,同时帮助 Web 开发者更好地理解 …

【UI】element ui table(表格)expand实现点击一行展开功能

文章目录 前言涉及知识点:代码部分隐藏小箭头总结 前言 element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染。 element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以…

斯坦福研究人员探讨大型语言模型在社交网络生成中的应用及其在政治同质性上的偏见

社交网络生成在许多领域有着广泛的应用,比如流行病建模、社交媒体模拟以及理解社交现象如两极化等。当由于隐私问题或其他限制无法直接观察真实网络时,创建逼真的社交网络就显得尤为重要。这些生成的网络对于在这些情况下准确建模互动和预测结果至关重要…

相机光学(三十七)——自动对焦原理

1.自动对焦的三种方式 目前在手机上采用的自动对焦系统包括反差对焦、相位对焦和激光对焦三种方案,下面我们来看一下它们的工作原理和相互之间的区别是什么。 1.1反差对焦【CDAF】- Contrast Detection Auto Focus 反差对焦是目前普及率最高、使用最广泛、成本相对…

透视表支持自定义聚合公式,新增字体管理功能,DataEase开源BI工具v2.10 LTS版本发布

2024年9月9日,人人可用的开源BI工具DataEase正式发布v2.10 LTS(Long Term Support)版本。DataEase开源项目组将对v2.10 LTS版本提供长期支持,定期迭代发布小版本,持续进行问题修复更新并针对部分功能进行优化。欢迎广大…

谋算中的因果与归纳不同于计算中的因果与归纳

谋算中的因果与归纳不同于计算中的因果与归纳。计算中的因果与归纳是基于已有的数据和信息,通过数学运算和逻辑推理得出结论。而谋算中的因果与归纳则是基于对未来的预测和判断,通过分析和推理得出结论。因此,谋算中的因果与归纳需要更多的主…

rsync+inotify 实现数据实时同步

Rsync(远程同步,Remote Sync)是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具,并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操…

铭顺元宇宙时代到来,数字人应用案例分享

近年来,随着技术的不断发展,数字人的功能和表现力也在不断提升,形形色色的虚拟数字人正代替真人,扮演着代言人、主播、客服和智能助理的角色,涉及文旅、电商、金融等多个行业。作为随着AI技术在数字人产业中的发展&…