Redis中大数据情况下set类型的批量查询方式sscan
程序员文章站
2022-03-05 09:54:41
...
当数据量比较小时可以使用smembers命令取出全部key,但是当数据量比较大情况下,使用这个命令会阻塞住,可以通过sscan命令分批次查看数据。
List<String> list = new ArrayList<>();
String cursor = "0";
long l1 = System.currentTimeMillis();
while(true){
ScanResult<String> compid = jedisCluster.sscan("compid", cursor);
List<String> result = compid.getResult();
list.addAll(result);
cursor = compid.getStringCursor();
if(list.size()>2000)
break;
}
System.out.println(System.currentTimeMillis()-l1);
sscan命令有一个游标cursor参数,通过它来确定读取的数据位置。sscan命令返回结果是一个ScanResult对象,通过getResult方法得到数据,通过getStringCursor方法得到下一次查询的游标位置,在下一次查询时传入即可。