XTRIM 系列

语法
XTRIM key <MAXLEN | MINID> [= | ~] threshold [LIMIT count]
从以下位置开始可用:
5.0.0
时间复杂度:
O(N),其中 N 是逐出的条目数。但是,常量时间非常小,因为条目被组织在宏节点中,其中包含多个条目,这些条目可以通过单个释放来释放。
ACL 类别:
@write, @stream, @slow,

XTRIM如果需要,通过逐出较旧的条目(具有较低 ID 的条目)来修剪流。

可以使用以下策略之一来修剪流:

  • MAXLEN:只要流的长度超过指定的长度,就会驱逐条目threshold哪里threshold为正整数。
  • MINID:驱逐 ID 小于threshold哪里threshold是流 ID。

例如,这会将流修剪为最新的 1000 个项目:

XTRIM mystream MAXLEN 1000

而在此示例中,ID 小于 649085820-0 的所有条目都将被逐出:

XTRIM mystream MINID 649085820

默认情况下,或者当提供可选参数时,该命令将执行精确修剪。=

根据策略,精确修剪意味着:

  • MAXLEN:修剪后的流的长度将恰好是其原始长度与指定长度之间的最小值threshold.
  • MINID:流中最早的 ID 将正好是其原始最早的 ID 与指定的 ID 之间的最大值threshold.

近乎精确的修剪

由于精确修剪可能需要 Redis 服务器进行额外作,因此可以提供可选参数以提高效率。~

例如:

XTRIM mystream MAXLEN ~ 1000

这个~MAXLENstrategy 和threshold表示用户请求修剪流,使其长度至少threshold,但可能略多一些。 在这种情况下,Redis 将在可以提高性能时(例如,当无法删除数据结构中的整个宏节点时)提前停止修剪。 这使得修剪更加高效,这通常是您想要的,尽管在修剪后,流可能在threshold.

在使用 时,控制命令完成的工作量的另一种方法是~LIMIT第。 使用时,它指定最大值count将被逐出的条目。 什么时候LIMITcount,则默认值 100 * 宏节点中的条目数将隐式用作count. 将值 0 指定为count完全禁用限制机制。

例子

XADD mystream * 字段 1 A 字段 2 B 字段 3 C 字段4 D XTRIM mystream MAXLEN 2 系列 XRANGE mystream - +

RESP2/RESP3 回复

Integer reply:从流中删除的条目数。

历史

  • 从 Redis 版本 6.2.0 开始:添加了MINIDtrimming 策略和LIMIT选择。
为本页评分
返回顶部 ↑