XTRIM:对流进行修剪

用户除了可以在执行 XADD 命令的同时使用 MAXLEN 命令对流进行修剪之外,还可以通过执行 XTRIM 命令直接将流修剪至指定长度:

XTRIM stream MAXLEN len

XTRIM 命令在执行之后会返回被移除元素的数量作为结果。

image 2025 01 05 11 57 42 653
Figure 1. 图10-5 执行XTRIM命令前的mini-stream流

举个例子,对于图10-5所示的流来说,如果我们执行以下命令:

redis> XTRIM mini-stream MAXLEN 3
(integer) 2

那么流 mini-stream 最开头的两个元素将被移除,如图10-6所示。因为在这次修剪操作中有两个元素被移除了,所以命令返回了 2 作为结果。

image 2025 01 05 11 58 43 992
Figure 2. 图10-6 执行XTRIM命令后的mini-stream流

目前来说,XTRIM 命令与带有 MAXLEN 选项的 XADD 命令一样,都是根据先进先出规则来淘汰旧元素的,但 Redis 将来会支持更多不同的淘汰规则可供用户选择。

其他信息

  • 复杂度:O(log(N)+M),其中 N 为执行修剪操作前流包含的元素数量,而 M 则为被移除元素的数量。

  • 版本要求:XTRIM 命令从 Redis 5.0.0 版本开始可用。