目录

Redis-Stream

Redis Stream

Redis Stream(Redis 流)是 Redis 5.0 引入的数据结构,主要用于 消息队列、事件存储和数据流处理 。它结合了 列表(List)、发布订阅(Pub/Sub)和有序集合(Sorted Set) 的特性,适用于 高吞吐的日志、事件驱动架构和实时数据处理

Redis Stream 的特点

  1. 持久化日志存储 :Stream 内部数据按追加(Append-Only)方式存储,支持历史消息查询。
  2. 消息队列 :支持 生产者-消费者模式 ,多个消费者可以消费同一条消息。
  3. 消费者组(Consumer Group) :支持多个消费者分配和消费消息,类似于 Kafka 的 Consumer Group
  4. 高效的 ID 机制 :每条消息都有一个唯一的 Stream ID (形如 1678875112345-0 ),按时间顺序存储。
  5. 阻塞和非阻塞读取 :支持 XREAD (读取)、 XREADGROUP (消费者组读取)以及 XADD (添加)。
  6. 自动删除策略 :可以手动或自动删除过期数据,防止 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 长度

典型应用场景

  1. 日志和事件存储 :如 用户行为日志、订单流水 记录。
  2. 消息队列 :适用于 实时任务调度 ,提供类似 Kafka 的能力,但更轻量。
  3. 流式数据处理 :配合 Redis Gears 进行 数据分析、实时告警
  4. 微服务通信 :用于异步任务处理、去中心化事件驱动架构。

Redis Stream 提供了强大的 数据流处理能力 ,结合 Kafka、RabbitMQ 等消息队列的优点,适用于高性能分布式系统。