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

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));
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容