XDEL
返回从流中删除消息后的消息数。
语法
XDEL key id [id ...]
引入版本:5.0.0
复杂度摘要:O(1)
从流中删除指定条目,并返回删除的条目数。在流中不存在某些指定 ID 的情况下,该数量可能小于传递给命令的 ID 数量。
通常您可能会将 Redis 流视为仅追加的数据结构,但是 Redis 流是在内存中表示的,因此我们也可以删除条目。例如,这可能有助于遵守某些隐私政策。
必需参数
key
流键。
id [id ...]
要删除的一个或多个消息 ID。
示例
> 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"
详细说明
了解条目删除的底层细节
Redis 流的表示方式可以提高内存效率:使用基数树来索引线性打包数十个流条目的宏节点。通常,当您从流中删除条目时,该条目不会被 真的 逐出,它只是被标记为已删除。
最终如果宏节点中的所有条目都被标记为已删除,则整个节点将被销毁并回收内存。这意味着,如果您从流中删除大量条目,例如附加到流中的超过 50% 的条目,则每个条目的内存使用量可能会增加,因为发生的情况是流将变得碎片化。然而,流性能将保持不变。
在 Redis 的未来版本中,如果给定的宏节点达到给定数量的已删除条目,我们可能会触发节点垃圾收集。目前,根据我们对该数据结构的预期用途,增加这种复杂性并不是一个好主意。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
整数回复:已删除的条目数。
RESP3
整数回复:已删除的条目数。
资料来源:Redis 官方 XDEL 文档;中文内容参考 Redis 文档许可。