在redis中,我如何删除密钥?
我想删除匹配“用户*”的密钥。
我怎么做在redis命令行?
这不是一个function,现在可以一次完成(请参阅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}'
echo 'KEYS user*' | redis-cli | awk '{print $1}'
– 获取所有密钥,并删除awk不需要的额外文本。 -
echo DEL $key
– 为每一个创build一个echo语句来删除它。 -
| redis-cli
| redis-cli
– 接收DEL语句并将其传回到cli中。
不build议这是最好的方法(如果你的一些用户名有空格,你可能会遇到一些问题,但希望你能明白这一点)。
我用来做你想要的另一个紧凑的单线程是:
redis-cli KEYS "user*" | xargs redis-cli DEL
除了orangeoctopus的回答,你不需要echo
和pipe,你可以把命令作为parameter passing给redis-cli
。 这意味着你可以做
for key in `redis-cli "KEYS" "user*" | awk '{print $1}'` do redis-cli "DEL" "$key" done
使用awk
,使用redis-cli KEYS
命令和redis-cli DEL
命令从redisfind所有匹配的密钥。
redis-cli KEYS "user*" | awk '{ system("redis-cli DEL " $1) }'
我知道这已经很老了,但是对于你们这些来自Google的人来说:
我刚刚向npm和github发布了一个命令行界面实用程序,允许您从Redis数据库中删除与给定模式(甚至或者如您问的用户 )相匹配的键。
你可以在这里find这个工具:
当使用该指针时,您可以编辑该模式以防止特定字符转义。 例如,要删除像“\ b test \ b”这样的模式,请使用:
redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del
使用这个删除有反斜杠,引号,双引号或空格的redis键:
redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL