XDELEX

从流中删除一个或多个条目。

语法

XDELEX key [KEEPREF | DELREF | ACKED] IDS numids id [id ...]

引入版本:8.2.0

复杂度摘要:O(1)

从指定 key 处的流中删除一个或多个条目。

XDELEX 是 Redis Streams XDEL 命令的扩展,它提供了对如何删除有关消费者组的消息条目的更多控制。

必需参数

key

流键的名称。

IDS numids id [id ...]

IDS 块指定要删除的条目: - numids:后面的 ID 数量 - id [id ...]:要删除的一个或多个流条目 ID

注意:IDS 块可以位于命令中的任意位置,与其他命令相同。

可选参数

KEEPREF | DELREF | ACKED

指定删除条目时如何处理消费者组引用。从 Redis 8.2 开始可用。如果未指定选项,则默认使用 KEEPREF:

  • KEEPREF(默认):从流中删除指定条目,但在所有消费者组的 PEL(待处理条目列表)中保留对这些条目的现有引用。此行为类似于 XDEL。
  • DELREF:从流中删除指定条目,并从所有消费者组的待处理条目列表中删除对这些条目的所有引用,有效地清除消息的所有痕迹。如果条目 ID 不在流中,但存在悬空引用,则 XDELEX 和 DELREF 仍会删除所有这些引用。
  • ACKED:仅删除所有消费者组读取并确认的条目。

该命令提供对流条目删除的细粒度控制,在与需要仔细管理待处理条目引用的消费者组一起工作时特别有用。

示例

redis> XADD mystream * field1 value1
"1784722083515-0"
redis> XADD mystream * field2 value2
"1784722083516-0"
redis> XADD mystream * field3 value3
"1784722083517-0"
redis> XRANGE mystream - +
1) 1) "1784722083515-0"
   2) 1) "field1"
      2) "value1"
2) 1) "1784722083516-0"
   2) 1) "field2"
      2) "value2"
3) 1) "1784722083517-0"
   2) 1) "field3"
      2) "value3"
redis> XDELEX mystream KEEPREF IDS 2 1526919030474-55 1526919030474-56
1) (integer) -1
2) (integer) -1
redis> XRANGE mystream - +
1) 1) "1784722083515-0"
   2) 1) "field1"
      2) "value1"
2) 1) "1784722083516-0"
   2) 1) "field2"
      2) "value2"
3) 1) "1784722083517-0"
   2) 1) "field3"
      2) "value3"

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

以下之一:

  • 数组回复:当给定键不存在时,每个请求的 ID 为 -1。
  • 数组回复:对于每个ID:
    • 整数回复:如果提供的流键中不存在此类 ID,则为 -1。
    • 整数回复:如果条目已从流中删除,则为 1。
    • 整数回复:如果条目未被删除并且仍然存在引用(ACKED 选项),则为 2;另外,如果没有消费群体。

RESP3

以下之一:

  • 数组回复:当给定键不存在时,每个请求的 ID 为 -1。
  • 数组回复:对于每个ID:
    • 整数回复:如果提供的流键中不存在此类 ID,则为 -1。
    • 整数回复:如果条目已从流中删除,则为 1。
    • 整数回复:如果条目未被删除并且仍然存在引用(ACKED 选项),则为 2;另外,如果没有消费群体。

资料来源:Redis 官方 XDELEX 文档;中文内容参考 Redis 文档许可。