在redis中,如何删除密钥?

时间:2012-01-10 05:45:22

标签: database redis

我想删除与“user *”匹配的键。

我如何在redis命令行中执行此操作?

9 个答案:

答案 0 :(得分:57)

我用来做你想做的另一个小型单线:

redis-cli KEYS "user*" | xargs redis-cli DEL

答案 1 :(得分:44)

现在这不是一次性的功能(请参阅DEL documentation中的注释)。不幸的是,您只能使用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}' - 获取所有密钥并删除awk不需要的额外文本。
  2. echo DEL $key - 为每个人创建一个echo语句以将其删除。
  3. | redis-cli - 接受DEL语句并将它们传递回cli。
  4. 不建议这是最好的方法(如果你的某些用户名中有空格,可能会有一些问题,但希望你明白这一点。)

答案 2 :(得分:5)

现在有一个删除密钥的命令,即DEL键[keys]

DEL key...

答案 3 :(得分:2)

除了orangeoctopus'回答,你不需要echo和管道,你可以将命令作为参数传递给redis-cli。这意味着你可以做到

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done

答案 4 :(得分:1)

使用awk,使用redis-cli KEYS命令和管道到redis-cli DEL命令从redis中查找所有匹配的密钥。

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'

答案 5 :(得分:0)

我知道这已经过时了,但对于那些来自Google的人来说:

我刚刚向npm和github发布了一个命令行界面实用程序,它允许您从Redis数据库中删除与给定模式匹配的键(甚至是,或者当您询问用户时)。

您可以在此处找到该实用程序:

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

答案 6 :(得分:0)

使用oneliner时,您可以编辑模式以防它逃脱特定字符。例如,要删除类似' \ b test \ b'使用方法:

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del

答案 7 :(得分:0)

使用此方法删除带有反斜杠,引号,双引号或空格的redis键:

redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL

答案 8 :(得分:0)

为了删除db 3的所有redis key:

redis-cli -n 3 --scan | xargs redis-cli -n 3 DEL