批量删除Redis Key
2021-11-30 本文已影响0人
AC编程
方式一:Linux命令完成批量删除
Redis中有删除单个key的指令del
,但没有批量删除key的指令,不过我们可以借助 Linux的xargs
指令来完成这个动作。
./redis-cli -h IP -p PORT -a PASSWORD -n NUM keys 'key*' | xargs ./redis-cli -h IP -p PORT -a PASSWORD -n NUM del
- IP:redis服务器的IP地址
- PORT:redis服务的端口
- PASSWORD :redis服务的密码
- NUM:redis库的下标
注意:记得以上批量删除,需要退出redis的命令行模式下操作。必须要指定redis的路径。
1、连上redis
./redis-cli -h ip -p 端口 -a 密码
2、选择数据库
select 数据库下标
3、模糊查询key是否存在
keys ‘UPLOAD_*’
4、执行exit命令退出redis
5、删除 端口为6585密码为123456且数据库为1 中所有UPLOAD_开头的key
/usr/bin/redis-cli -n 1 -p 6585 -a 123456 keys 'UPLOAD_*' | xargs /usr/bin/redis-cli -n 1 -p 6585 -a 123456 del
方式二:使用图形界面工具REDISDESKTOPMANAGER
在需要删除的key分组上右击Delete Namaspace
删除分组。
注意:如果Redis是集群模式,Delete Namaspace
可能会失败。
方式三:使用jedis批量删除keys
3.1 引入jedis包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.0</version>
</dependency>
3.2 使用jedisApi连接redis
//连接redis ,redis的默认端口是6379
Jedis jedis = new Jedis ("localhost",6379);
//验证密码,如果没有设置密码这段代码省略
jedis.auth("password");
//连接
jedis.connect();
//断开连接
jedis.disconnect();
3.3 编写批量删除的方法
方法将需要删除的key转换成数组传入jedis.del(keys)批量删除key
// java代码
public static void deleteByPattern(Jedis jedis, String pattern) {
Set<String> keys = jedis.keys(pattern);
if(keys != null && !keys.isEmpty()) {
String keyArr[] = new String[keys.size()];
jedis.del(keys.toArray(keyArr));
}
}
// jedis的del方法源码
public Long del(final String... keys) {
checkIsInMultiOrPipeline();
client.del(keys);
return client.getIntegerReply();
}