redis扫描用法
//获取redis内所有以R****_开头的key 的 keys集合
public static List<String> getAllDataList() {
Jedis jedis = redisPool_slave.getResource();
try {
if (null != jedis) {
//扫描redis查看所有的key是否以R****_开头,记录并返回所有满足条件的数据
//记录所有符合要求的key
List<String> keys = new ArrayList<String>();
int scanCounts = 10000; //每次扫描的个数
String machs = "R****_" + "*"; //匹配格式
String cussor = ScanParams.SCAN_POINTER_START; //游标初始值为0
ScanParams scanParams = new ScanParams(); //新建scanParams对象设置count和match
scanParams.count(scanCounts);
scanParams.match(machs);
//循环执行,直至游标重新回至0停止(即完成一次遍历)
while (true) {
//记录扫描结果(结果不仅记录key,还记录了本次扫描最终的位置)
ScanResult<String> result = jedis.scan(cussor, scanParams);
//打印扫描结果
//System.out.println(result.getStringCursor()+":"+result.getResult());
//将符合的结果存至keys中
keys.addAll(result.getResult());
//更新游标为本次扫描的最终位置
cussor = result.getStringCursor();
if ("0".equals(cussor)) {
break;//当游标回至0时,代表一次遍历结束,跳出while
}
}
return keys;
}
} catch (Exception e) {
errorlog.warn("getAllDataList Exception", e);
} finally {
jedis.close();
}
return null;
}