redis简介
redis作为缓存服务器在项目中经常使用
使用redis存储数据时,我们经常会将key分组
使用冒号(:)分组或者其他的自定义前缀方式,如果我们需要清除redis特定的key内容时,在命令行下又没有直接的命令可用,可以使用linux的xargs参数或者第三方工具
一、使用命令行批量删除redis的key
首先linux服务器上需要安装redis客户端,然后进入到redis-cli命令所在的目录
./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs ./redis-cli -h IP -p PORT -a PASSWORD del
IP:redis服务器的IP地址
PORT:redis服务的端口
PASSWORD :redis服务的密码
例如:
删除本机127.0.0.1,默认端口6379,密码为123456的redis服务上org开头的key
./redis-cli -h 127.0.0.1 -p 6379 -a 123456 keys 'org*' | xargs ./redis-cli -h 127.0.0.1 -p 6379 -a 123456 del
二、使用图形界面工具RedisDesktopManager
新版本的RedisDesktopManager目前支持通过分组批量删除key
打开软件,点击左下角的“Connect to Redis Server”新建redis链接
redis-connect.png
配置:连接的别名(Name:自定义)、Host(redis服务的ip)、端口(port)、密码(Auth)连接到redis服务
在需要删除的key分组上右击“Delete Namaspace”删除分组
del-namespace.png
注意如果通过工具的Namaspace删除key分组,key的前缀分别必须使用冒号“:”进行分组,否则无法使用工具删除
三、使用jedis批量删除keys
方法将需要删除的key转换成数组传入jedis.del(keys)批量删除key
// java代码
public static void deleteByPattern(Jedis jedis, String pattern) {
Set 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();
}