Redis中大数据情况下set类型的批量查询方式sscan

当数据量比较小时可以使用smembers命令取出全部key,但是当数据量比较大情况下,使用这个命令会阻塞住,可以通过sscan命令分批次查看数据。

        List list = new ArrayList<>();
        String cursor = "0";
        long l1 = System.currentTimeMillis();
        while(true){
            ScanResult compid = jedisCluster.sscan("compid", cursor);
            List 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方法得到下一次查询的游标位置,在下一次查询时传入即可。

你可能感兴趣的:(redis)