Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-xdel.html

Redis XDEL 命令

Redis 流(Streams) Redis 流(Streams)


Redis XDEL 命令从指定流中移除指定的条目,并返回成功删除的条目的数量,在传递的 ID 不存在的情况下,返回的数量可能与传递的 ID 数量不同。通常,你可能将 Redis 流想象为一个仅附加的数据结构,但是 Redis 流是存在于内存中的,所以我们也可以删除条目。这也许会有用,例如,为了遵守特定的隐私策略。

命令格式

XDEL key ID [ID ...]

可用版本:>=5.0.0

时间复杂度:针对每个消息的处理的时间复杂度为 O(1)

命令返回值

该命令返回删除的消息 ID。

理解删除条目的底层细节

Redis 流以一种使其内存高效的方式表示:使用基数树来索引包含线性数十个 Stream 条目的宏节点。通常,当你从 Stream 中删除一个条目的时候,条目并没有真正被驱逐,只是被标记为删除。

最终,如果宏节点中的所有条目都被标记为删除,则会销毁整个节点,并回收内存。这意味着如果你从 Stream 里删除大量的条目,比如超过 50% 的条目,则每一个条目的内存占用可能会增加,因为 Stream 将会开始变得碎片化。然而,流的表现将保持不变。

在 Redis 未来的版本中,当一个宏节点内删除条目达到一定数量的时候,我们有可能会触发节点垃圾回收机制。目前,根据我们对这种数据结构的预期用途,还不太适合增加这样的复杂度。

示例

redis> XADD mystream * a 1
1538561698944-0
redis> XADD mystream * b 2
1538561700640-0
redis> XADD mystream * c 3
1538561701744-0
redis> XDEL mystream 1538561700640-0
(integer) 1
redis> XRANGE mystream - +
1) 1) 1538561698944-0
   2) 1) "a"
      2) "1"
2) 1) 1538561701744-0
   2) 1) "c"
      2) "3"
redis>
Redis OBJECT 命令允许从内部查看指定 key 的 Redis 对象信息。它通常用在调试,或者了解相关 key 是否使用特殊编码的 ...
SORT命令返回或保存指定列表、集合、有序集合key中经过排序的元素。 ...
Redis GET 命令返回指定 key 所关联的字符串值。如果指定的 key 不存在时,返回特殊值 nil。此外,如果指定的 key 存储 ...
TYPE 命令返回指定 key 所储存的值的类型。 ...
Redis COMMAND 命令用于返回所有的 Redis 命令的详细信息,并以数组形式展示。 ...