redis的SCAN命令的用法
MATCH:功能对元素的模式匹配工作是在命令从数据集中取出元素后和向客户端返回元素前的这段时间内进行的, 所以如果被迭代的数据集中只有少量元素和模式相匹配, 那么迭代命令或许会在多次执行中都不返回任何元素。
详情见官网链接 http://www.redis.cn/commands/scan.html
java程序使用该指令时,相关语法如下:
//scan指令获取的key会出现重复,所以得去重,scan只适合单线程游标遍历
String prefix = '匹配的字符串';
Set<String> keys = Sets.newHashSet();
ScanParams scanParams = new ScanParams();
scanParams.match(prefix + "*"); // *匹配0个到多个
scanParams.count(10000); //每次获取10000个key,然后再来match
ScanResult<String> scan = redisClient.scan("0", scanParams);
keys.addAll(scan.getResult());
String stringCursor = scan.getStringCursor();
while (!stringCursor.equals("0")) {
List<String> result = scan.getResult();
keys.addAll(result);
scan = redisClient.scan(stringCursor, scanParams);
stringCursor = scan.getStringCursor();
}