Redis-Stream
目录
Redis Stream
Redis Stream(Redis 流)是 Redis 5.0 引入的数据结构,主要用于 消息队列、事件存储和数据流处理 。它结合了 列表(List)、发布订阅(Pub/Sub)和有序集合(Sorted Set) 的特性,适用于 高吞吐的日志、事件驱动架构和实时数据处理 。
Redis Stream 的特点
- 持久化日志存储 :Stream 内部数据按追加(Append-Only)方式存储,支持历史消息查询。
- 消息队列 :支持 生产者-消费者模式 ,多个消费者可以消费同一条消息。
- 消费者组(Consumer Group) :支持多个消费者分配和消费消息,类似于 Kafka 的 Consumer Group 。
- 高效的 ID 机制
:每条消息都有一个唯一的
Stream ID
(形如
1678875112345-0
),按时间顺序存储。 - 阻塞和非阻塞读取
:支持
XREAD
(读取)、XREADGROUP
(消费者组读取)以及XADD
(添加)。 - 自动删除策略 :可以手动或自动删除过期数据,防止 Stream 过大占用内存。
基本命令
命令 | 作用 |
---|---|
XADD mystream * field1 value1 field2 value2 | 添加数据到 Stream |
XRANGE mystream - + | 查询 Stream 内的所有数据 |
XREAD COUNT 2 STREAMS mystream 0 | 读取 Stream 数据 |
XGROUP CREATE mystream mygroup $ MKSTREAM | 创建消费者组 |
XREADGROUP GROUP mygroup consumer1 COUNT 1 STREAMS mystream > | 从消费者组读取消息 |
XACK mystream mygroup 1684211234567-0 | 确认消息已消费 |
XDEL mystream 1684211234567-0 | 删除特定消息 |
XLEN mystream | 获取 Stream 长度 |
典型应用场景
- 日志和事件存储 :如 用户行为日志、订单流水 记录。
- 消息队列 :适用于 实时任务调度 ,提供类似 Kafka 的能力,但更轻量。
- 流式数据处理 :配合 Redis Gears 进行 数据分析、实时告警 。
- 微服务通信 :用于异步任务处理、去中心化事件驱动架构。
Redis Stream 提供了强大的 数据流处理能力 ,结合 Kafka、RabbitMQ 等消息队列的优点,适用于高性能分布式系统。