主页 > 人工智能  > 

redis集群模糊获取缓存redisKey

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

标签:

redis集群模糊获取缓存redisKey由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“redis集群模糊获取缓存redisKey