8 hours ago
- Redis Streams,在 Redis 5 中引入,通常被错误地视为仅类似于 Kafka 的消息传递解决方案,但它们是一种通用数据结构。
- Streams 克服了 CSV 日志的局限性,提供了高效的范围查询、自动生成的基于时间的 ID、紧凑的内存使用以及删除旧条目的能力。
- 在内部,Streams 使用由基数树链接的增量压缩宏节点,实现了快速查找、范围查询和上限流。
- 条目 ID 是单调递增且基于时间的,允许按时间轻松进行范围查询(例如,XRANGE)。
- Streams 可以替代传统模式,如有序集合 + 哈希用于建模对象(例如,网球比赛),实现超过 13 倍的内存节省(100 万条目为 16.8 MB 对比 220 MB)。
- 这种内存效率使得在合理的 RAM 中存储数十亿条项目成为可能,从而实现了新的用例,如时间序列和小对象跟踪。
- Streams 不仅限于流式处理;它们可以用于任何需要有序、仅追加数据且具有唯一 ID 和低内存开销的场景。