redis批量删除带空格的key

redis批量删除的通常做法:

redis-cli keys "blacklist*" | xargs redis-cli del


上面的命令在key的前后没有空格时是可以的,但有空格就不行了:
$redis-cli keys "blacklist*"
1) "blacklist:12: [email protected] "


注意到[email protected]前后都有一个空格
有空格的话,就要把key用双引号括起来,像这样是可以删除的:

$redis-cli del "blacklist:12: [email protected] "


那批量的操作怎么做呢?

最后的解决办法是,用引号括起来,为每一个key拼好一个命令:

$redis-cli keys "blacklist*" > keys.txt
$awk '$0="redis-cli del \""$0"\""' keys.txt > cmd.txt
$cat cmd.txt
redis-cli del "blacklist:12: [email protected] "


再执行cmd.txt:

$chmod a+x cmd.txt
$./cmd.txt


最后要说的是,在key的前后引入的空格是一个失误,实际上应该trim一下

你可能感兴趣的:(redis)