java - 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
有人可以帮我为什么上面的代码不起作用。
解决方案
您的最后一次扫描迭代将被忽略。光标已完成,但您尚未处理返回的键。
推荐阅读
- python - TensorFlow2 - 模型子类化 ValueError
- linux - 通过 kubectl 没有显示环境变量
- python - 从 selenium 单击按钮什么也不做
- azure - 从 Asp.Net Core 中的 URL 中删除附加斜杠
- vulkan - 没有命令缓冲区的提交队列是否有效?
- javascript - 即使生成了 meta.json 也无法通过代码自动清除缓存 react-clear-cache 包
- java - 在这种情况下,有没有办法用正则表达式找到特殊的子字符串?
- php - 在管理员中使用带有动态内容的 wordpress 厚框
- typescript - 在另一个包上使用类型声明
- go - 生成 micro-go 代码时出错 - --go_out: protoc-gen-go: unknown plugin "micro"