redis 命令、命令行根据前缀(通配符)批量删除redis存储的key

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

  1. 打开软件,点击左下角的“Connect to Redis Server”新建redis链接 《redis 命令、命令行根据前缀(通配符)批量删除redis存储的key》 redis-connect.png

  2. 配置:连接的别名(Name:自定义)、Host(redis服务的ip)、端口(port)、密码(Auth)连接到redis服务
  3. 在需要删除的key分组上右击“Delete Namaspace”删除分组

    《redis 命令、命令行根据前缀(通配符)批量删除redis存储的key》 del-namespace.png

  4. 注意如果通过工具的Namaspace删除key分组,key的前缀分别必须使用冒号“:”进行分组,否则无法使用工具删除

三、使用jedis批量删除keys

方法将需要删除的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();
  }
    原文作者:maxbin
    原文地址: https://www.jianshu.com/p/b3b6f3146325
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞