Redis set数据结构value值全部拿出方法

2019-10-21  本文已影响0人  wang_cheng

Redis set数据结构如果用smembers 如果数据量较多的话,使用这个势必会造成线上redis卡顿一下,


image.png
1)该方法模糊匹配指定的Key
 获得所有的key之后,可以遍历每一个key,取出key对应的值,进行具体的操作
        // 开始游标
        String cursor = "0";
        // 扫描参数
        ScanParams scanParams = new ScanParams();
        scanParams.count(10000);
        scanParams.match("HASH-TAG-*");
        // 扫描结果
        scanResult = jedis.scan(cursor, scanParams);
        // 扫描后的游标,如果为0,则表明扫描结束
        cursor = scanResult.getStringCursor();
        // 获得扫描的所有key集合
        List<String> keyList = scanResult.getResult(); 

       

2)获取所有的value值
这边定义一个集合,下面方法完成遍历后加入到集合中返回,可以拿到set结构中所有的value值
List<String> values = new ArrayList<>();     
            String cursor ="0";
            ScanResult<String> scanResult;
            do {
                scanResult = jc.sscan(key,cursor);
                cursor = scanResult.getStringCursor();
                if (CollectionUtils.isNotEmpty(scanResult.getResult())){
                    values.addAll(scanResult.getResult());
                }
    //在这一步的时候内部已经迭代完成了,返回的肯定不是"0" 用do while结构比较合适点
            }while (!"0".equals(cursor));
        }
上一篇 下一篇

猜你喜欢

热点阅读