作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想检查我在 redis 中的所有 key 是否正确。
我像这样分组存储 key :
userid:fname
userid:lname
userid:age
...
我想通过按用户 ID 对它们进行分组来遍历它们,然后根据 fname、lname 和 age 检查每个组。
我该怎么做?
最佳答案
ScanParams params = new ScanParams();
params.match("userid:fname*");
// Use "0" to do a full iteration of the collection.
ScanResult<String> scanResult = jedis.scan("0", params);
List<String> keys = scanResult.getResult();
对 lname 和 age 重复上面的代码。或者,匹配 user:id
,然后使用正则表达式过滤组并遍历 keys
。
编辑:对于大型集合(数百万个键),a scan result will return a few tens of elements .相应地调整您的代码以继续扫描,直到扫描完整个 key 集合:
ScanParams params = new ScanParams();
params.match("userid:fname*");
// An iteration starts at "0": http://redis.io/commands/scan
ScanResult<String> scanResult = jedis.scan("0", params);
List<String> keys = scanResult.getResult();
String nextCursor = scanResult.getStringCursor();
int counter = 0;
while (true) {
for (String key : keys) {
addKeyToProperGroup(key);
}
// An iteration also ends at "0"
if (nextCursor.equals("0")) {
break;
}
scanResult = jedis.scan(nextCursor, params);
nextCursor = scanResult.getStringCursor();
keys = scanResult.getResult();
}
关于Redis 迭代关键组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042941/
我是一名优秀的程序员,十分优秀!