如何在redis中删除与特定模式匹配的键

时间:2015-02-18 03:38:51

标签: redis redis-cli

如何使用redis-cli删除redis中与特定模式匹配的键。我想从以下列表中删除所有foo。

KEYS *

foo:1
foo:2
bar:1
foo:3
bar:2
foo:4

3 个答案:

答案 0 :(得分:22)

正如对该问题的评论所述,此处还有许多其他答案。如果您正考虑在生产服务器中执行此操作,请务必阅读上面链接的内容。

我发现对偶尔进行命令行清理最有用的是:

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

来自"How to atomically delete keys matching a pattern using Redis"

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

在进行一些搜索后,我想按模式删除数千个键:

  • 如果redis上有多个数据库,则应使用-n [number]
  • 确定数据库
  • 如果您有几个键,请使用del,但是如果有成千上万个键,则最好使用unlink,因为 unlink是非阻止的,而del是阻止的,有关更多信息,请访问此页面unlink vs del
  • keys也很像del,并且正在阻止

所以我用这段代码按模式删除密钥:

 redis-cli -n 2 --scan --pattern '[your pattern]' | xargs redis-cli -n 2 unlink