11

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

KEYS *

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

4 回答 4

32

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

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

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

来自“如何使用 Redis 以原子方式删除与模式匹配的键”

于 2015-02-18T04:37:16.667 回答
4

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

  • 如果你在 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 
于 2019-07-11T04:21:07.653 回答
3

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

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

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

于 2016-02-24T23:41:48.017 回答
0

如果有人想在 AWS Elasticache redis 中执行相同的操作,那么您可以使用 SSH 连接到您应该访问 AWS Redis 服务器的 EC2 服务器,然后您可以使用以下命令。

redis-cli -h <HOST> -p <PORT> --scan --pattern "patter*n" | xargs redis-cli -h <HOST> -p <PORT> unlink

将主机和端口替换为 AWS redis 服务器主机和端口。

此外,如果您的 redis 设置需要密码验证,请使用,

redis-cli -h <HOST> -p <PORT> -a <PASSWORD> --scan --pattern "patter*n" | xargs redis-cli -h <HOST> -p <PORT> -a <PASSWORD> unlink

将主机、端口和密码替换为 AWS redis 服务器主机、端口和密码。

您还可以对 localhost 使用上述命令。

于 2021-10-01T07:09:17.047 回答