1. 程式人生 > >Redis中大資料情況下set型別的批量查詢方式sscan

Redis中大資料情況下set型別的批量查詢方式sscan

當資料量比較小時可以使用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方法得到下一次查詢的遊標位置,在下一次查詢時傳入即可。