首页 > 解决方案 > Redis SCAN 返回无效游标

问题描述

在执行下面的代码时

KeyScanCursor<String> cursor = syncCommands.scan(ScanArgs.Builder.limit(50).match(match));
List<String> values = null;
while (!cursor.isFinished()) {
for (String key : cursor.getKeys()) {
    values = syncCommands.lrange(key, 0, 50);
    }
    cursor = syncCommands.scan(cursor, ScanArgs.Builder.limit(50).match(match));
}

得到空结果但在执行以下命令时

redis-cli --cluster call 127.0.0.1:30001 SCAN 0 MATCH "orgId:EC:resetPasswordExpiryHours"

得到预期的结果

127.0.0.1:30003: 22
 orgId:EC:resetPasswordExpiryHours

有人可以帮我为什么上面的代码不起作用。

标签: javaredis-clusterlettuce

解决方案


您的最后一次扫描迭代将被忽略。光标已完成,但您尚未处理返回的键。


推荐阅读