Redis 流
评论 0
浏览 0
2023-08-12
Redis 流简介
Redis 流是一种数据结构,其作用类似于仅附加日志。 您可以使用流来实时记录并同时聚合事件。 Redis 流用例的示例包括:
- 事件溯源(例如,跟踪用户操作、点击等)
- 传感器监控(例如,现场设备的读数)
- 通知(例如,将每个用户的通知记录存储在单独的流中)
Redis 为每个流条目生成一个唯一的 ID。 您可以使用这些 ID 稍后检索其关联条目或读取并处理流中的所有后续条目。
Redis 流支持多种修剪策略(以防止流无限制增长)和多种消耗策略(请参阅 XREAD
、XREADGROUP
和 XRANGE
)。
例子
- 将多个温度读数添加到流中
> XADD temperatures:us-ny:10007 * temp_f 87.2 pressure 29.69 humidity 46
"1658354918398-0"
> XADD temperatures:us-ny:10007 * temp_f 83.1 pressure 29.21 humidity 46.5
"1658354934941-0"
> XADD temperatures:us-ny:10007 * temp_f 81.9 pressure 28.37 humidity 43.7
"1658354957524-0"
- 读取从 ID
1658354934941-0
开始的前两个流条目:
> XRANGE temperatures:us-ny:10007 1658354934941-0 + COUNT 2
1) 1) "1658354934941-0"
2) 1) "temp_f"
2) "83.1"
3) "pressure"
4) "29.21"
5) "humidity"
6) "46.5"
2) 1) "1658354957524-0"
2) 1) "temp_f"
2) "81.9"
3) "pressure"
4) "28.37"
5) "humidity"
6) "43.7"
- 从流末尾开始读取最多 100 个新流条目,如果没有写入条目,则最多阻塞 300 毫秒:
> XREAD COUNT 100 BLOCK 300 STREAMS temperatures:us-ny:10007 $
(nil)
基本命令
请参阅流命令的完整列表。
性能
向流添加条目的时间复杂度为 O(1)。 访问任何单个条目的时间复杂度为 O(n),其中 n 是 ID 的长度。 由于流 ID 通常很短且长度固定,因此这有效地减少了恒定时间查找。 有关原因的详细信息,请注意流是作为基数树实现的。
简而言之,Redis 流提供高效的插入和读取。 有关详细信息,请参阅每个命令的时间复杂度。
了解更多
- Redis 流教程通过许多示例解释了 Redis 流。
- Redis 流解释是对 Redis 流的有趣介绍。
- Redis 大学的 RU202 是一门专门针对 Redis Streams 的免费在线课程。
0 个评论