Redis聚合游标异常:FT.CURSOR READ始终返回0的问题排查
Redis聚合游标异常问题分析与解决
问题原因
这是你使用的redis/redis-stack:7.0.6-RC2候选版本的已知兼容性bug——数值范围查询(@timestamp:[-inf inf])与聚合游标(WITHCURSOR)的组合逻辑存在缺陷,导致游标无法正确遍历所有匹配文档,仅返回第一次的COUNT数量后就终止。
虽然FT.SEARCH能正常识别该范围查询并返回全量结果,但FT.AGGREGATE的游标处理模块在RC版本中对这类查询的解析存在问题,而通配符查询*则能触发正确的游标遍历逻辑。
解决方案
1. 优先升级到正式稳定版
RC版本(候选发布版)本身用于测试,稳定性不足。直接升级到Redis Stack的正式版(如7.0.6正式版或更高版本),该bug已在后续正式版本中修复。
2. 临时替代方案(无需升级)
如果暂时无法升级,可将聚合查询的条件替换为通配符*,并通过FILTER子句实现相同的timestamp范围筛选:
FT.AGGREGATE idx:cits "*" WITHCURSOR COUNT 500 FILTER "@timestamp >= -inf AND @timestamp <= inf"
执行该命令后,再用FT.CURSOR READ idx:cits <cursorid>读取后续数据,即可正常获取剩余的11807条匹配结果。
补充说明
你设置的MAXSEARCHRESULTS=-1是正确的,该参数用于限制普通查询的返回上限,不影响聚合游标的遍历逻辑,因此不是问题根源。
内容的提问来源于stack exchange,提问作者Javari
相关产品推荐
相关产品推荐

