为什么Redis 5.0以后有了消息队列功能,还要用RabbitMQ之类的消息队列

news/2025/2/21 20:46:49/文章来源:https://www.cnblogs.com/geek233/p/18725879

Redis 5.0 引入的 Stream 数据结构和 Pub/Sub 模块确实提供了基本的消息队列功能,但它并不能完全替代 RabbitMQ 等专业的消息队列系统。以下是主要原因:


1. 功能定位不同

  • Redis 的消息队列功能
    • 主要面向简单场景(如通知、事件广播)。
    • 提供基础的 PUB/SUB(发布/订阅)和 STREAMS(带持久化的队列)。
    • 支持事务和部分消息确认(如 ACK),但功能相对基础。
  • RabbitMQ 等专业消息队列
    • 设计目标是为复杂分布式系统服务。
    • 支持多种消息协议(AMQP、MQTT 等)、灵活的路由策略(Exchange)、消息持久化、死信队列、消费者分组、流量控制等功能。
    • 生产者和消费者解耦更彻底,适合大规模、高并发场景。

2. 可靠性与持久化

  • Redis
    • 默认情况下消息存储在内存中,断电后数据会丢失(除非启用 AOF 持久化)。
    • STREAMS 支持持久化,但恢复性能和可靠性弱于专业 MQ。
  • RabbitMQ
    • 消息默认持久化到磁盘,支持事务和消息确认机制(确保消息不丢失)。
    • 高可用架构(如镜像队列)和故障转移能力更强。

3. 消息路由与协议

  • Redis
    • 只支持简单的 PUB/SUB(主题订阅)和 LIST 队列模式。
    • 缺乏灵活的消息路由规则(如基于头部的路由、多级交换机)。
  • RabbitMQ
    • 支持 Exchange 的多种类型(Direct、Fanout、Topic、Headers),实现复杂的路由逻辑。
    • 完整实现 AMQP 协议,兼容 MQTT/XMPP 等多种协议。

4. 消费模型

  • Redis
    • SUBSCRIBE 模式下,同一消息会被所有订阅者重复接收(不适合点对点场景)。
    • STREAMS 支持单次消费或重复消费,但缺乏消费者分组和负载均衡功能。
  • RabbitMQ
    • 支持多种消费模式(如竞争消费者、共享消费者)。
    • 消费者分组(Consumer Group)自动分配消息分片,适应高并发场景。

5. 生态与社区支持

  • RabbitMQ
    • 成熟的开源社区,丰富的插件(如延迟队列、监控插件)。
    • 企业级支持(如 RabbitMQ Cloud)和详细的文档。
  • Redis
    • 虽然社区强大,但消息队列相关功能相对较新,生态成熟度较低。

6. 适用场景对比

场景 Redis RabbitMQ
简单事件通知 ✅(如用户登录推送) ✅(轻量级场景可选)
日志收集/异步任务 ❌(可靠性不足) ✅(高可靠、持久化)
复杂消息路由 ❌(仅支持基础模式) ✅(灵活路由、多协议支持)
高吞吐量微服务通信 ❌(内存限制,集群扩展复杂) ✅(分布式架构,水平扩展)

总结

  • 用 Redis 实现消息队列:适合简单场景、追求低延迟、不需要复杂功能的内部系统。
  • 用 RabbitMQ:适合需要高可靠性、复杂路由、持久化存储或大规模分布式系统的场景。

在实际开发中,两者常配合使用:例如用 RabbitMQ 处理核心消息流,用 Redis 实现实时通知或缓存增强。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制造行业CRM选哪家?中大型企业CRM首选纷享销客

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在众多CRM解决方案中,最终纷享销客凭借其卓越的功能性、高度的定制化能力以及出色的市场表现,成为了众多中大型企业首选的CRM…

6.2.6 特征映射和感受野

这里看英文原版更好语句更通顺,还有补充上面的图片其实就是想说明低层的CNN可以检测边缘什么的(右侧图像是中间的图像与左侧图像做卷积的结果)

MQ基础

MQ基础认识MQ结合JAVA客户端 依赖 <!--AMQP依赖,包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置文件 spring:rabbitmq:host: 8.2…

Excel 自动换行后批量设置单元格上下边距

excel 自动换行后 单元格的上下边距挨的很紧,看起来很不舒服 如下图 现在教大家 如何批量设置 单元格中有多行文本后的上下间距,设置成功后 如下图所示:具体步骤: 1、鼠标悬停在 excel 中的任意sheet(页签)上,右键 选择 查看代码 2、在弹出的 Visual Basic 编辑器弹框左…

开发者必备!Github Stars 存储库管理器!

gitstars —— 一个基于 Vite + Vue.js 构建的 GitHub Star 仓库管理器,旨在帮助开发者更好的管理、搜索、查阅收藏的开源项目。大家好,我是 Java陈序员。 Github 作为全球最大的开发者交流平台,拥有数不胜数的开源项目,我们会经常收藏一些开源项目,方便工作和学习。 但随…

1. Linux下 MySQL 的详细安装与使用

1. Linux下 MySQL 的详细安装与使用 @目录1. Linux下 MySQL 的详细安装与使用1. Linux 下安装 MySQL8.0 的详细安装步骤:2. Linxu 当中的MySQL 设置远程登录3. 最后:1. Linux 下安装 MySQL8.0 的详细安装步骤:查看是否安装过MySQL,如果你是用rpm安装, 检查一下RPM PACKAGE:…

临时编辑-----WordPress后台用户手册

登录 WordPress后台默认的登录链接是: https://yourdomain.com/wp-admin/ 输入你的账号(可以是邮箱,也可以是昵称)和密码,即可登录。然后就会进入到你的WordPress网站后台。 注意:忘记你的WordPress密码也不用太慌张,可以从服务器后台进入到WordPress后台。 进来的界面就…

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用 @目录15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用1. CAdvisor监控收集+InfluxDB存储数据+Granfana展示图表 的概述1.1 CAdvisor 监控收集1.2 InfluxDB 存储数据1.3 Granfana…

c#中GDI+使用贝塞尔曲线画一朵云

主要是路径的计算 先得到路径if (value.Width > 0 && value.Height > 0) {GraphicsPath.AddBezier(new PointF(RectangleF.Left + RectangleF.Width * 0.1f, RectangleF.Top + RectangleF.Height * 0.55f),new PointF(RectangleF.Left + RectangleF.Width * 0.1f…

如何让你的ida 地址就是RVA

如何让你的ida 地址就是RVA 原理:首先软件进入ida中的时候,其实就相当于把应用程序载入了内存中,RVA其实就是虚拟的便宜地址,也就是在内存中的地址,所以这里的RVA就是在ida中看到的地址-Imagebase Imagebase 其实就是基址。所以我们只需要把imagebase 设置为0即可拿到我…

c#GDI+实现类似油门踏板效果的自定义控件

先看效果图下面是代码protected override void OnPaint(PaintEventArgs e) {e.Graphics.SetGDIHigh();var rect = new Rectangle(0, 0, this.Width, this.Height);// 创建变换矩阵Matrix transformMatrix = new Matrix();// 使用平行四边形的方法近似梯形transformMatrix.Shear…

NocoBase 本周更新汇总:支持全局和批量数据触发自定义操作事件

本周更新包括:支持全局和批量数据触发自定义操作事件,支持数据表预置字段扩展等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含…