当前位置: 首页 > news >正文

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去删除。否则会删除不了。

相关文章:

  • 【Vue】elementUI表格,导出Excel
  • 2023_Spark_实验二十九:Flume配置KafkaSink
  • Python3 数字(Number) ----20231215
  • C# WPF上位机开发(动态添加控件)
  • 智慧路灯杆如何实现雪天道路安全监测
  • PowerShell实战(一)PowerShell使用ImportExcel模块轻松操作Excel
  • 写好ChatGPT提示词原则之:清晰且具体(clear specific)
  • 【期末复习向】长江后浪推前浪之ChatGPT概述
  • 【线性代数】期末速通!
  • 快速构建自定义配置好的VM - 使用GCP instance-template 和 custom-image
  • AXure的情景交互
  • P2P网络下分布式文件共享场景的测试
  • IO第5天
  • 机器视觉【1】相机的成像(畸变)模型
  • Windows11环境下配置深度学习环境(Pytorch)
  • ACT、NAT、NATPT和EASY-IP
  • 百度搜索展现服务重构:进步与优化
  • 实现前端指纹登录的简单示例
  • Map、List、Set 分别说下线程安全类和线程不安全的类
  • Java网络编程——安全网络通信
  • 游戏论|暴君无道,吊民伐罪——《苏丹的游戏》中的政治
  • 印称一名高级官员在巴基斯坦发动的袭击中死亡
  • 纽约大学朗格尼医学中心的转型带来哪些启示?
  • 巴基斯坦称约50名印度士兵在克什米尔实控线丧生
  • 经济日报:降准降息,提前还房贷划算吗?
  • 新华时评:任凭风云变幻,中俄关系从容前行