
每条消息包含一个唯一 ID(格式为 <毫秒时间戳>-<序列号>)和一组键值对。 消息按时间顺序存储,支持追加操作。
消费者组允许多个消费者协同处理消息,实现负载均衡。 每个消费者组维护一个 Pending Entries List (PEL),用于跟踪已分发但未确认的消息。
XADD:添加新消息到Stream中。XRANGE 和 XREVRANGE:根据消息ID范围获取消息,前者按升序,后者按降序。XREAD:读取消息。支持从指定位置开始读取,并能持续监听新消息。XGROUP:创建消费者组,允许多个消费者共同消费同一Stream中的消息,确保每条消息仅被其中一个消费者处理。
# 添加一条消息到名为'mystream'的Stream中XADD mystream * sensor_id 1234 temperature 27.5# 读取'mystream'中的最新消息XREAD COUNT 1 STREAMS mystream 0# 创建一个名为'mygroup'的消费者组,从头开始消费XGROUP CREATE mystream mygroup $ MKSTREAM# 作为一个消费者,读取该组中的消息XREADGROUP GROUP mygroup consumer1 COUNT 1 STREAMS mystream >

基数树编码的Radix Tree结构实现消息存储,内部采用宏节点(macro nodes)和压缩列表(listpack)双重存储策略。 消息ID的16字节混合时间戳(毫秒时间+序列号)设计,支持客户端生成与服务端生成两种模式。 自动过期机制(MAXLEN)与手动修剪(XTRIM)的混合内存管理策略。
消费者组状态维护采用三重复合结构:组元信息、待处理条目列表(PEL)、消费者元数据。 自动认领机制(AUTOCLAIM)与手动XCLAIM命令的失效转移策略对比。 跨消费者组的消息可见性隔离与多租户支持。
AOF重写时的Stream压缩算法优化。 RDB快照中Stream的增量存储策略。 混合持久化模式下的消息完整性保证。

Redis Stream 使用 Radix Tree 和 listpack 数据结构存储消息。 Radix Tree 的键存储消息 ID,值使用 listpack 存储多个消息,从而节省内存。
消息 ID 由时间戳和序列号组成,确保全局唯一。 新消息的 ID 必须大于旧消息的 ID,保证逻辑上的追加操作。
通过紧凑的存储结构(如 listpack)和 Radix Tree 的前缀压缩,Redis Stream 在内存使用上非常高效。

利用其持久化能力和消息确认机制,Redis Stream能够有效管理分布式环境下的任务分发与执行情况跟踪。

通过分片(如 XADD orders:{user_id%10} *)降低单个 Stream 的竞争,提升并行度。
内存预分配策略与碎片整理阈值配置。 不同压缩深度(listpack配置)对写入性能的影响曲线。
# 流水线批量写入示例pipe = redis.pipeline()for msg in message_batch:pipe.xadd('stream_key', msg)pipe.execute()
使用 XTRIM 控制消息数量或 ID 范围,避免内存过载。
阻塞读取(XREAD BLOCK)的Epoll事件驱动实现。 非阻塞读取与客户端轮询的最佳间隔计算。 分区读取(XRANGE分页)与全量读取的内存消耗模型。
Hash Tag分片策略对消息顺序性的影响。 跨节点消费者组的协调难题与解决方案。 热点流检测与自动再平衡算法。
监控消息积压量、未 ACK 消息数等关键指标。 通过主从复制和 AOF 持久化实现容灾。


Redis Stream作为前端缓冲层的容量规划。 Connector实现中的消息双写一致性保证。 流量洪峰时的自动降级策略。
K8s Operator的自愈配置模板。 Prometheus监控指标的暴露方式。 Serverless场景下的冷启动优化。
Go语言redigo库的流式处理优化。 Node.js ioredis的Pipeline支持深度。 Rust客户端async/await模式下的性能表现。

基于LRU的自动驱逐策略配置。 流分片(sharding)与TTL的平衡设置。 监控指标:stream_node_count、stream_length、memory_used。
AOF always与everysec模式的可靠性对比。 消费者PEL(Pending Entries List)的持久化策略。 集群脑裂场景下的消息完整性验证。
客户端ID生成算法的严格单调性验证。 跨分片消息的顺序性补偿方案。 CAP定理下的最终一致性实现。


文章转载自老王两点中,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




