*Redis FT.CURSOR-DEL 命令

FT.CURSOR-DEL 删除 RediSearch 聚合查询游标,释放服务器端资源。


*语法

FT.CURSOR-DEL index cursor_id

*参数说明

参数 类型 必填 说明
index String 索引名称(或别名)
cursor_id Integer 游标 ID

*返回值

  • OK:游标删除成功

*时间复杂度

O(1)

*

*示例

*删除游标

> FT.AGGREGATE idx:products "*" WITHCURSOR COUNT 10
1) 1) "name"
   2) "product1"
2) (integer) 42
> FT.CURSOR-DEL idx:products 42
OK

*清理失效游标

> FT.CURSOR-DEL idx:articles 15
OK

*常见错误

错误 原因 解决
Cursor not found 游标 ID 不存在或已过期 确认游标 ID,检查是否已超时

*最佳实践

  • 使用 WITHCURSOR 后,务必在客户端读取完所有数据或异常时调用 CURSOR-DEL
  • 游标有默认超时(MAXIDLE),但显式删除更可靠
  • 游标在服务器端占用内存,大量未删除游标会导致内存泄漏

*FAQ

Q1: 游标会自动过期吗? A: 会,默认 MAXIDLE 300000ms(5分钟),可配置。但建议客户端显式删除。

Q2: 删除游标后还能读取吗? A: 不能,删除后后续 FT.CURSOR-READ 会返回错误。

Q3: 游标和索引有绑定关系吗? A: 是的,游标绑定到创建它的索引,删除时需提供相同索引名。

Q4: 连接断开后游标会怎样? A: 连接断开不会自动删除游标,依赖 MAXIDLE 超时机制。高并发场景注意清理。