XDEL

语法
XDEL key id [id ...]
从以下位置开始可用:
5.0.0
时间复杂度:
O(1) 指定要在流中删除的每个项目,而不管流的大小如何。
ACL 类别:
@write, @stream, @fast,

从流中删除指定的条目,并返回条目数 删除。此数字可能小于 流中不存在某些指定 ID 的情况。

通常,您可能会将 Redis 流视为仅追加数据结构, 但是 Redis 流在内存中表示,因此我们也能够 删除条目。这可能很有用,例如,为了遵守 某些隐私政策。

了解条目删除的低级详细信息

Redis 流的表示方式使其内存高效: 基数树用于索引线性打包的宏节点 的流条目。通常,当您从流中删除条目时会发生什么 是该条目并没有真正被逐出,它只是被标记为已删除。

最终,如果宏节点中的所有条目都标记为已删除,则整个 节点被销毁并回收内存。这意味着,如果您删除 来自流的大量条目,例如超过 50% 的 entries 附加到流中,则每个条目的内存使用量可能会增加,因为 发生的情况是 Stream 将变得碎片化。然而,流 性能将保持不变。

在 Redis 的未来版本中,我们可能会触发节点垃圾 collection 中,以防给定的宏节点达到给定的已删除数量 条目。目前,根据我们预计此数据结构的使用情况,它是 增加这种复杂性不是一个好主意。

例子

> XADD mystream * a 1
1538561698944-0
> XADD mystream * b 2
1538561700640-0
> XADD mystream * c 3
1538561701744-0
> XDEL mystream 1538561700640-0
(integer) 1
127.0.0.1:6379> XRANGE mystream - +
1) 1) 1538561698944-0
   2) 1) "a"
      2) "1"
2) 1) 1538561701744-0
   2) 1) "c"
      2) "3"

RESP2/RESP3 回复

Integer reply:已删除的条目数。
为本页评分
返回顶部 ↑