在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 

要通过它:

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}' echo 'KEYS user*' | redis-cli | awk '{print $1}' – 获取所有密钥,并删除awk不需要的额外文本。
  2. echo DEL $key – 为每一个创build一个echo语句来删除它。
  3. | 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这个工具:

https://www.npmjs.com/package/redis-utils-cli

当使用该指针时,您可以编辑该模式以防止特定字符转义。 例如,要删除像“\ 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