我想在Redis命令行中删除与“user *”匹配的键。
我该如何做?
我想在Redis命令行中删除与“user *”匹配的键。
我该如何做?
我用的另一个简洁的一行代码来实现你想要的功能是:
redis-cli KEYS "user*" | xargs redis-cli DEL
目前还没有一次性实现此功能的功能(请参见DEL
文档中的注释)。不幸的是,您只能使用KEYS
命令获取结果集,然后遍历结果并使用DEL
删除每个键。
使用一些Bash命令来帮助怎么样?
for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
do echo DEL $key
done | redis-cli
为了执行此操作,请按以下步骤进行:
echo 'KEYS user*' | redis-cli | awk '{print $1}'
,使用awk删除不需要的额外文本,获取所有键。echo DEL $key
。| redis-cli
。awk
,从 Redis 中查找所有匹配的键,使用 redis-cli KEYS
命令并将结果传输到 redis-cli DEL
命令。redis-cli KEYS "user*" | awk '{ system("redis-cli DEL " $1) }'
回应orangeoctopus的答案,你不需要使用echo
和管道,你可以将命令作为参数传递到redis-cli
中。这意味着你可以这样做:
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
do redis-cli "DEL" "$key"
done
redis-cli -c --scan --pattern '*user*' | xargs -l -r redis-cli -c del
redis-cli -n 3 --scan | xargs redis-cli -n 3 DEL
我知道这已经过时了,但对于从谷歌进入此页面的人来说:
我刚刚发布了一个命令行界面实用程序到npm和github上,它允许您从Redis数据库中删除与给定模式(甚至是或者像您问用户)匹配的键。
您可以在这里找到这个实用程序:
使用单行命令时,您可以编辑模式以避免特定字符的转义。例如,要删除类似于'\b test \b'的模式,请使用:
redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del