1. 核心概念
Redis Stream 是 Redis 5.0 引入的持久化消息队列数据结构,具有以下特性:
- 有序消息存储:基于时间戳的全局唯一消息ID(格式:
<毫秒时间>-<序列号>
) - 消费者组模式:支持多消费者协同处理消息
- 数据持久化:依赖 Redis AOF/RDB 机制
- 内存高效:底层使用紧凑的基数树(Radix Tree)存储
2. 核心命令语法
2.1 添加流信息
# 基本写入(自动生成ID)
XADD key [NOMKSTREAM] [MAXLEN | MINID [= | ~] threshold [LIMIT count]] * | id field value [field value ...]
参数解析:
key
: Stream 的键名。NOMKSTREAM
**: 如果 Stream 不存在,不自动创建(默认会自动创建)。MAXLEN
*: 限制 Stream 的最大长度(删除旧消息)。MAXLEN ~ threshold
: 近似裁剪(性能优化,允许略微超过阈值)。MAXLEN = threshold
: 精确裁剪(严格限制长度)。
MINID
: 删除 ID 小于threshold
的消息(类似按时间裁剪)。\*|ID
:*
: 自动生成消息 ID(格式为<timestamp>-<sequence>
,如1631234567890-0
)。- 手动指定 ID(需大于已有最大 ID)。
field value
: 消息的键值对(支持多个字段)。
示例:
# 创建my_stream流 自动生成消息ID
xadd my_stream * name zhangsan age 25
> xadd my_stream * name zhangsan age 25
"1741586247360-0"
>
2.2 获取流信息