Redis的key的获取

redis的所有的key的获取

一、获取方式

redis的命令keys(*) 可以获取所有的key。但是此种方式当数据量大的时候,会产生阻塞的情况。
redis的key还可以通过scan命令获取key。scan采用渐进式遍历的方式来解决keys命令可能带来的阻塞问题
与SCAN 命令相关的命令:
 与SCAN 命令相关的命令还有 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令,都是用于增量地迭代(incrementally iterate)一集元素(a collection of elements),区别在于:
  1、SCAN 命令用于迭代当前数据库中的数据库键,返回的每个元素都是一个数据库键;
  2、SSCAN 命令用于迭代集合键中的元素,返回的每个元素都是一个集合成员;
  3、HSCAN 命令用于迭代哈希键中的键值对,返回的每个元素都是一个键值对,一个键值对由一个键和一个值组成。
  4、ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值),返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。

二、使用步骤

1.引入库

SCAN 命令对应java的 Jedis 中的操作示例如下:

public static void testScan(Jedis jedis){
   
        // 游标初始值为0
        String cursor = ScanParams.SCAN_POINTER_START;
        String key = "PLFX-ZZSFP-*";
        ScanParams scanParams = new ScanParams();
        scanParams.match(key);// 匹配以 PLFX-ZZSFP-* 为前缀的 key
        scanParams.count(1000);
        while (true){
   
            //使用scan命令获取数据,使用cursor游标记录位置,下次循环使用
            ScanResult<String> scanResult = jedis.scan(cursor, scanParams);
            cursor = scanResult.getStringCursor();// 返回0 说明遍历完成
            List<String> list = scanResult.getResult();
            long t1 = System.currentTimeMillis();
            for(int m = 0;m < list.size();m++){
   
                String mapentry = list.get(m);
                System.out.println(mapentry);
                //jedis.del(key, mapentry);
                
            }
            long t2 = System.currentTimeMillis</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值