当前位置: 首页 > 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去删除。否则会删除不了。

http://www.lryc.cn/news/262444.html

相关文章:

  • 100GPTS计划-AI翻译TransLingoPro
  • Linux install manual 1Panel
  • 母婴服务品牌网站的效果如何
  • C语言--有一个3*4的矩阵,求出其中最大值的那个元素的值,以及其所在的行号和列号
  • 安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换
  • MYSQL练题笔记-高级字符串函数 / 正则表达式 / 子句-简单3题
  • vue扭蛋机抽奖游戏
  • 代码随想录27期|Python|Day16|二叉树|104.二叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数
  • ༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻
  • Matplotlib快速入门,Python通用的绘图工具库上手
  • Linux 基本语句_16_Udp网络聊天室
  • 使用ffmpeg命令进行视频格式转换
  • Mac安装Adobe AE/pr/LR/ai/ps/au/dw/id 2024/2023报错问题解决(常见错误:已损坏/2700/146/130/127)
  • Python三级 每周练习题31
  • 【DataSophon】大数据服务组件之Flink升级
  • Android笔记(十八):面向Compose组件结合Retrofit2和Rxjava3实现网络访问
  • mybatis中oracle的sql没走索引导致特别慢(未加jdbcType的)
  • QT自带打包问题:无法定位程序输入点?metaobject@qsound
  • 7.3 lambda函数
  • dcoker-compose一键部署EFAK —— 筑梦之路
  • 音视频:Ubuntu下安装 FFmpeg 5.0.X
  • 【LSM tree 】Log-structured merge-tree 一种分层、有序、面向磁盘的数据结构
  • 配置OSPF与BFD联动示例
  • 01到底应该怎么理解“平均负载”
  • jmeter,动态参数之随机数、随机日期
  • uniApp常见知识点-问题答案
  • 云原生基础入门概念
  • 一个 tomcat 下如何部署多个项目?附详细步骤
  • pycharm强制让terminal停止执行的快捷键
  • MFC(Microsoft Foundation Classes)中 MessageBox