Redis中大資料情況下set型別的批量查詢方式sscan
阿新 • • 發佈:2018-12-17
當資料量比較小時可以使用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方法得到下一次查詢的遊標位置,在下一次查詢時傳入即可。