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

如何在redis中删除与特定模式匹配的密钥,redis,redis-cli,Redis,Redis Cli,如何使用redis cli在redis中删除与特定模式匹配的密钥。我想从下面的列表中删除所有foo KEYS * foo:1 foo:2 bar:1 foo:3 bar:2 foo:4 正如在对这个问题的评论中提到的,这里已经有很多其他的答案。如果你想在生产服务器上这样做,一定要阅读上面的链接 我发现偶尔清理命令行最有用的方法是: redis cli键“*”| xargs redis cli DEL 从。我刚刚向npm和github发布了一个命令行界面实用程序,它允许您从Redis数据库中删

如何使用redis cli在redis中删除与特定模式匹配的密钥。我想从下面的列表中删除所有foo

KEYS *

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

正如在对这个问题的评论中提到的,这里已经有很多其他的答案。如果你想在生产服务器上这样做,一定要阅读上面的链接

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

redis cli键“*”| xargs redis cli DEL


从。

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

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


经过一些搜索,我发现以下几点,我想按模式删除数千个键:

  • 如果redis上有多个db,则应使用
    -n[number]
  • 如果您有几个键,请使用
    del
    ,但如果有数千或数百万个键,最好使用
    unlink
    ,因为在del阻塞时unlink是非阻塞的,有关更多信息,请访问此页面
  • 另外,
    类似于del,并且处于阻塞状态
因此,我使用以下代码按模式删除键:

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

在同一主题上有多个已回答的问题,例如,即使对于大于1000个键的大集合,nice解决方案也可能重复。我将使用“rediscli--scan”而不是键。特别是在生活环境中。不建议使用密钥。我无法使用
-h
作为主机从远程主机删除。另外,为了澄清Philip所说的,应该是redis cli--scan--pattern“*”,如果您不使用模式,它将只选择所有密钥。我得到
(错误)请求中的交叉插槽键不会散列到同一插槽
我正在使用以下命令删除模式
hi*
表单集群
redis cli-uredis://localhost:6379 --扫描--模式“hi*”| xargs redis cli-uredis://localhost:6379 DEL
hi@roottraveler我不知道问题出在哪里,但是我搜索了一下,发现这个链接检查是否适合你@rootTraveler我对redis cluster也有同样的问题。一种解决方案是基本上一个接一个地删除密钥,但使用
redis cli--pipe
可以加快速度: