Redis Streams 是 Redis 5.0 引入的一种新型数据结构,用于处理消息事件流。它提供了一个有序、持久化、可扩展的日志结构,可以按照时间戳的顺序存储和检索消息。以下是 Redis Streams 的一些基本用法:

1. 创建 Stream:

XADD mystream * field1 value1 field2 value2

通过 XADD 命令创建一个新的 Stream,并向其中添加消息。mystream 是 Stream 的名称,* 表示使用自动生成的消息 ID,field1 value1 field2 value2 是消息的键值对。

2. 读取 Stream 中的消息:

XREAD COUNT 5 STREAMS mystream 0

使用 XREAD 命令读取 Stream 中的消息。上述命令表示从 mystream 中读取不超过 5 条消息,从最早的消息(0)开始读取。COUNT 参数是可选的,用于指定要读取的消息数量。

3. 消息消费者(Consumer):

XREADGROUP GROUP mygroup myconsumer COUNT 1 STREAMS mystream 0

使用 XREADGROUP 命令可以创建一个消费者组,以协调多个消费者并确保每个消息只被处理一次。上述命令表示在 mystream 中以组名 mygroup 创建一个名为 myconsumer 的消费者,每次处理一个消息。

4. 消息确认:

XACK mystream mygroup message-id

使用 XACK 命令确认已经处理的消息,防止它被其他消费者再次处理。message-id 是消息的唯一标识符。

5. 消费者状态:

XINFO CONSUMERS mystream mygroup

使用 XINFO 命令查看消费者组的状态,包括消费者和它们的偏移量(offset)。

6. 删除消息:

XTRIM mystream MINIDLE <milliseconds>

使用 XTRIM 命令删除 Stream 中的消息,保留最新的消息。MINIDLE 参数指定消息在被删除前需要保留的最小时间。

7. 消息阻塞读取:

XREAD BLOCK <milliseconds> STREAMS mystream $

使用 XREAD 命令的 BLOCK 参数可以让消费者在没有消息的情况下阻塞一段时间,以便在消息到达时立即处理。

这只是 Redis Streams 的一些基本用法,它提供了更多的功能和选项,如支持多个 Stream、消息的生存时间、消费者的等待时间等。Streams 是一个强大的工具,适用于处理实时事件流、日志、消息队列等应用场景。