圆~圈

redis命令行批量删除key

redis 批量删除key

redis提供了del命令,可以让我们同时删除多了key值,但是没有提供直接根据正则删除所有匹配key的方法,要做到批量删除,需要使用xargs命令辅助。

相关知识介绍

管道

将两个或多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或多个命令就形成了管道(pipe)。

管道符

Linux管道使用竖线|连接多个命令,被称为 管道符。具体语法格式如下:

command1 | command2
command1 | command2 [| commandN...]

当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令从标准输入读取,那么两个命令就形成了一个管道。

args命令

  • xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
  • xargs可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
  • xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
  • xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
  • xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

具体实现

redis无密码,默认数据库批量删除

redis-cli keys "key_pattern" | xargs redis-cli del

redis有密码,默认数据库批量删除

redis-cli -a pwd keys "key_pattern" | xargs redis-cli -a pwd del

redis有密码,指定数据库批量删除

redis-cli -a pwd -n 1 keys "key_pattern" | xargs redis-cli -a pwd -n 1 del