温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

redis如何做消息队列

发布时间:2026-11-07 16:23:44 来源:亿速云 阅读:88 作者:小樊 栏目:关系型数据库

Redis 做消息队列(MQ)有多种方式,适用场景不同。下面按常见方案 + 示例 + 优缺点给你系统讲一下。


一、List(最基础、最常用)

原理

  • 利用 LPUSH / RPUSH 入队
  • 利用 RPOP / LPOP 出队
  • 先进先出(FIFO)

示例

# 生产者
LPUSH queue:order "order1"
LPUSH queue:order "order2"

# 消费者
RPOP queue:order

阻塞消费(推荐)

BRPOP queue:order 0
  • 0 表示一直阻塞等待

优点

  • 简单
  • 性能高
  • 支持多消费者

缺点

  • ❌ 无消费确认(ack)
  • ❌ 消费者挂了可能丢消息
  • ❌ 无广播

✅ 适合:允许少量丢失、简单任务队列


二、Pub/Sub(发布订阅)

原理

  • 发布者 → 频道
  • 订阅者实时接收
  • 不保存消息

示例

# 订阅
SUBSCRIBE channel:log

# 发布
PUBLISH channel:log "hello"

优点

  • 实时
  • 支持多消费者广播

缺点

  • ❌ 消息不持久化
  • ❌ 断线即丢

✅ 适合:实时通知、聊天、推送


三、Stream(官方推荐 ✅)

Redis 5+ 引入,真正的消息队列

核心特性

  • 消息持久化
  • 消费组(Consumer Group)
  • 消息确认(ACK)
  • 支持重复消费

基础示例

生产者

XADD mystream * msg "order1"

消费者(阻塞)

XREAD BLOCK 0 STREAMS mystream $

消费组(重点)

创建消费组

XGROUP CREATE mystream group1 $

消费消息

XREADGROUP GROUP group1 consumer1 COUNT 1 STREAMS mystream >

确认消息

XACK mystream group1 1620000000000-0

优点

✅ 不丢消息
✅ 支持多消费者
✅ 可回溯
✅ 类似 Kafka

缺点

  • 比 List 稍复杂

✅ 生产环境首选


四、方案对比

方案 持久化 ACK 消费组 推荐度
List ❌ ❌ ❌ ⭐⭐
Pub/Sub ❌ ❌ ❌ ⭐
Stream ✅ ✅ ✅ ⭐⭐⭐⭐⭐

五、使用建议

  • 简单任务 → List + BRPOP
  • 实时通知 → Pub/Sub
  • 可靠队列 → ✅ Stream
  • 高可靠 / 海量 → 考虑 Kafka / RocketMQ

如果你愿意,我可以:

  • 给你 Java / Python / Go 示例
  • 帮你 设计消费组架构
  • 讲 Stream 实战避坑

你打算用哪种语言?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手