前言
想要批量删除redis
中的key
,这里引用到了一个xargs
命令,但属于linux
中的命令,windows
下需要自行下载工具包然后配环境变量,笔者没找到,就在linux
中实践了。
命令:xargs
xargs
是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数。其中还有很多用法,有兴趣伙伴可以深入了解。
附上看过的三个不同作者的文章。
先看效果:
先设定,三个key。
127.0.0.1:6379> set Test_one 1
OK
127.0.0.1:6379> set Test_two 2
OK
127.0.0.1:6379> set Test_three 3
OK
127.0.0.1:6379> keys Test*
1) "Test_three"
2) "Test_two"
3) "Test_one"
开始使用xargs
批量删除
redis-cli -a 123qqqq keys Test* | xargs -r -t -n1 redis-cli -a 123qqqq del
[root@acbb5763ee1f /]# redis-cli -a 123qqqq keys Test* | xargs -r -t -n1 redis-cli -a 123qqqq del
redis-cli -a 123qqqq del Test_three
(integer) 1
redis-cli -a 123qqqq del Test_two
(integer) 1
redis-cli -a 123qqqq del Test_one
(integer) 1
查看结果
127.0.0.1:6379> keys Test*
(empty list or set)
粗解
redis-cli -h 192.21.23.144 -p 6379 -a qqqqq -n 1 keys Test* | xargs -r -t -n1 redis-cli -h 192.21.23.144 -p 6379 -a qqqqq -n 1 del
分为两个部分执行:1、先登录查出需要删掉的key;2、把1中结果当成删除命令的参数,这个参数用xrgs接收,并给删除指令。
xargs
下:
-r no-run-if-empty 就是如果参数为空不执行后面的命令
-t 先打印执行命令 然后再执行
-n1 传入的参数没批执行几条,-n1,1就是每次传入1个值执行一次,具体可看这位大佬的解释 xargs
redis-cli
下:
-h host
-p port
-a auth
-n 选择库 -n 1相当于select 1 (默认0)