博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在spring boot上基于maven使用redis——批量匹配并删除 (二)
阅读量:4587 次
发布时间:2019-06-09

本文共 2162 字,大约阅读时间需要 7 分钟。

一、背景

    在搭建了项目之后,由于需要通过触发动作,并删除redis中多个key。

二、思路

     在查询了jedis并没有类似的删除方法之后,事情就变得清晰起来。完成上述任务,分为两个步骤,第一,找到要删除的key;第二删除掉他们。

三、 解决方法

     从找到要删除的key来说,有两种方法,一种是通过jedis的keys方法来获得;另外一种是通过scan方法获得。

     使用keys方法,寻找包含指定参数的key,其中“*”是匹配符,要是想找前缀就在其后加*,要是找后缀就在传入参数后面加*,而要是图省事方便,前后加*即可。

 

public Set
queryKeys(String key) { Jedis jedis = jedisPool.getResource(); StringBuilder paramKey = new StringBuilder("*").append(key).append("*"); Set
keys = jedis.keys(paramKey.toString()); return keys; }

 

  

 

使用scan方法,寻找包含指定参数的key,其中  第一,需要构建ScanParams(redis.clients.jedis.ScanParams);第二,主要是填充两个参数第一个是match,标明需要匹配的字符串,第二个是count标明要扫描出多少个来,我这里写的是1000,因为目前库中keys远小于1000,相当于全找出来;第三jedis中的部分scan方法是@Deprecated的不建议使用。

   在获得结果集之后,转换出来即可

public List
queryKeys(String key) { Jedis jedis = jedisPool.getResource(); // 存入键值对 ScanParams scanParams = new ScanParams(); StringBuilder paramKey = new StringBuilder("*").append(key).append("*"); scanParams.match(paramKey.toString()); scanParams.count(1000); ScanResult
sr = jedis.scan("0", scanParams); List
a = sr.getResult(); return a; }

因为,大家都知道keys的方法会阻塞单线程的redis 在keys少的时候,无所谓,但是在keys多的时候,这个就会是很大的隐患。我们采用redis 就是为了其查询速度快。所以,决定采取后者scan的方法实现

1 public void delStrings(String key) { 2  3         try { 4             Jedis jedis = jedisPool.getResource(); 5             // 存入键值对 6             ScanParams scanParams = new ScanParams(); 7             StringBuilder paramKey = new StringBuilder("*").append(key).append("*"); 8             scanParams.match(paramKey.toString()); 9             scanParams.count(1000);10             ScanResult
sr = jedis.scan("0", scanParams);11 List
a = sr.getResult();12 for (String delkey : a) {13 jedis.del(delkey);14 }15 jedis.close();16 } catch (Exception e) {17 // TODO: handle exception18 }19 }

四 MAVEN的依赖

 

redis.clients
jedis
2.9.0

 

五、后记

  还是写代码有意思  

  

 

 

 

ScanParams

转载于:https://www.cnblogs.com/iceworld520/p/9838128.html

你可能感兴趣的文章
团队项目第二阶段冲刺站立会议03
查看>>
Python 错误和异常小结
查看>>
sass基础
查看>>
关于Unity中特殊目录
查看>>
360wifi提取版
查看>>
关于Unity遇到的问题
查看>>
jQuery---ajax
查看>>
hdu 1270
查看>>
存储过程笔记
查看>>
AtCoder Grand Contest 017 迟到记
查看>>
CodeForces - 858A k-rounding
查看>>
CF 622F (拉格朗日插值)
查看>>
javascript变量类型转换(简单记几个)
查看>>
python过滤 Kubernetes api数据
查看>>
量子测量
查看>>
教你配置安全的ProFTPD服务器(上)
查看>>
bzoj 1226: [SDOI2009]学校食堂Dining
查看>>
spm3构建多入口项目
查看>>
Java:基本语法
查看>>
HTTP头的Expires与Cache-control
查看>>