redis-cli可以用这条命令查询出来u_开头的所有key出来:redis-cli keys u_*
但是删除key 却不能用通配符,只能一个一个的输入key: redis_cli del u_1 u_2 …
比较麻烦,linux下,可以通过xargs将管道输出转成命令行参数,比较适合这个场景
redis-cli keys u_* | xargs redis_cli del
但是这条命令在windows下就不灵了
原因是xargs转出来的参数带有行尾符$和回车符\r,攒个windows 批处理来解决
rem name:redisdelkeys.bat
@echo off
set t_keys=
:getkey
set onekey=%1
if "%onekey%"=="" (
goto end
)
set t_keys=%t_keys% %onekey%
shift /0
goto getkey
:end
if "%t_keys%"=="" (
goto done
)
redis-cli del %t_keys%
:done
另外也有同学使用git-bash环境,也做了个bash脚本,是用awk和临时文件来处理参数的
# name: gendelkey.sh
echo -n redis-cli del >redisdelkey.sh
redis-cli keys u_* | awk -v ORS=" " '{ print " " $0 }' >> redisdelkey.sh
./redisdelkey.sh
rm redisdelkey.sh
当然前面那个批处理也可以在git-bash下正常使用的