在redis中,如何删除密钥?

TIM*_*MEX 65 database redis redis-commands

我想删除与"user*"匹配的密钥.

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

use*_*446 60

我用来做你想要的另一个紧凑的单线:

redis-cli KEYS "user*" | xargs redis-cli DEL
Run Code Online (Sandbox Code Playgroud)

  • 如果你有多个数据库(键空间),那么这就是诀窍:让我们说你需要删除db3中的键:`redis-cli -n 3 KEYS"前缀:*"| xargs redis-cli -n 3 DEL` (6认同)

Don*_*ner 47

现在这不是一次性的功能(参见DEL文档中的注释).不幸的是,你只剩下使用KEYS,循环结果,然后使用DEL删除每一个.

如何使用bash来帮忙?

for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli
Run Code Online (Sandbox Code Playgroud)

要逐步完成:

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}' - 获取所有密钥并删除awk不需要的额外文本.
  2. echo DEL $key - 为每个人创建一个echo语句来删除它.
  3. | redis-cli - 获取DEL语句并将它们传递回cli.

不建议这是最好的方法(如果你的某些用户名中有空格,你可能会遇到一些问题,但希望你明白这一点).


小智 7

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

DEL键...


nei*_*ett 5

除了橙色章鱼的回答之外,您不需要echo和 管道,您可以将命令作为参数传递到redis-cli. 这意味着你可以做到

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done
Run Code Online (Sandbox Code Playgroud)


jee*_*etu 5

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

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'
Run Code Online (Sandbox Code Playgroud)