redis集群模糊获取缓存redisKey

redis cluster集群删除指定模糊redisKey的信息

**public int deleteRedisKey(String key){
   
        AtomicReference<Integer> result = new AtomicReference<>(0);
        busnessLogger.info("开始删除指定业务的模糊Key,deleteRedisKey:{}",key);
        try{
   
            Set<HostAndPort> haps = new HashSet<HostAndPort>();
            if(StringUtils.isNotBlank(redisClusterAddress)){
   
                String[] addresses = redisClusterAddress.split(",");
                for (String address : addresses) {
   
                    String[] ipAndPort = address.split(":");
                    HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1]));
                    haps.add(hap);
                }
            }else{
   
                busnessLogger.error("加载融资租赁Redis集群地址是空的!");
                throw new Exception("加载融资租赁Redis集群地址是空的!");
            }
            GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
            genericObjectPoolConfig.setMaxWaitMillis(Long.valueOf(genericObjectPoolConfigMaxWaitMillis));
            genericObjectPoolConfig.setMaxTotal(Integer.valueOf(genericObjectPoolConfigMaxTotal));
            genericObjectPoolConfig.setMinIdle(Integer.valueOf(genericObjectPoolConfigMinIdle));
            genericObjectPoolConfig.setMaxIdle(Integer.valueOf(genericObjectPoolConfigMaxIdle));
            JedisCluster jedisCluster = new JedisCluster(haps, Integer.valueOf(jedisClusterTimeout),Integer.valueOf(jedisClusterTimeout), Integer.valueOf(jedisClusterTimeoutMaxAttempts), passWd,genericObjectPoolConfig);

            jedisCluster.getClusterNodes().values().stream().forEach(pool->{
   
                String scanCursor = "0";
                List<String> scanResult = new ArrayList<>();
                do {
   
                    Jedis resource = pool.getResource();
                    ScanResult<String> scan = resource.scan(scanCursor, new ScanParams().match(key).count(1000000));
                    scanResult = scan.getResult();
                    for (String delete:scanResult) {
   
                        jedisCluster.del(delete);
                        result.getAndSet(result.get() + 1);
                    }
                    scanCursor = scan.getStringCursor();
                    resource.close();
                } while (!scanCursor.equals("0") && !scanResult.isEmpty());
//                Jedis jedis = pool.getResource();
//                ScanResult<String> scanResult = jedis.scan("0",new ScanParams().match(key));
//                while (!scanResult.isCompleteIteration()) {
   
//                    long t1 = System.currentTimeMillis();
//                    List<String> list = scanResult.getResult();
//                    for (String delete:list) {
   
//                        jedis.del(delete);
//                        result.getAndSet(result.get() + 1);
//                    }
//                    scanResult = jedis.scan(scanResult.getCursor(),new ScanParams().match(key));
//                    long t2 = System.currentTimeMillis();
//                }
          });
            jedisCluster.close();
            }catch (Exception e){
   
                busnessLogger.error("加载前置征信平台Redis集群异常!", e);
                throw new RuntimeException(e.getMessage());
            }
        busnessLogger.info("指定业务Key删除的个数:{}",result.get());
        return result.get();
    }**

这里面有两个需要特别注意:
1.ScanParam里面的count要设置大一点。
2.如果遍历做删除的时候,如果是集群,要用jedisCluster去删除。否则会删除不了。

相关推荐

  1. redis模糊获取缓存redisKey

    2023-12-15 09:10:02       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 09:10:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 09:10:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 09:10:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 09:10:02       20 阅读

热门阅读

  1. ES6简化对象

    2023-12-15 09:10:02       33 阅读
  2. zookeeper集群安装

    2023-12-15 09:10:02       35 阅读
  3. 华为HCIP认证H12-821题库下

    2023-12-15 09:10:02       31 阅读
  4. 【数据库设计和SQL基础语法】--查询数据--排序

    2023-12-15 09:10:02       34 阅读
  5. Web3.0和WebAssembly

    2023-12-15 09:10:02       30 阅读
  6. 【影像组学入门百问】#22—#24

    2023-12-15 09:10:02       33 阅读
  7. Git 的基本概念和使用方式。

    2023-12-15 09:10:02       35 阅读
  8. STM32系统滴答定时器SysTick实现精确ms和us延时

    2023-12-15 09:10:02       36 阅读
  9. 路由和网络周期

    2023-12-15 09:10:02       35 阅读
  10. android 13.0 Launcher3禁止拖拽app图标到第一屏

    2023-12-15 09:10:02       39 阅读