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一下