如何在不影响性能的情况下执行 Redis 中的海量键删除?
最后更新于 2024 年 4 月 8 日
问题
如何在不影响性能的情况下执行 Redis 中的海量键删除?
回答
您可以使用 `redis-cli` 或 RedisInsight 的批量操作功能。
使用命令行
使用 `redis-cli`,您可以指定一个模式,并确保您
- 使用 `-i` 选项,这样您就不会阻塞分片的执行
- 使用 unlink,这样您就可以在后台执行任务
-i <interval> When -r is used, waits <interval> seconds per command.
It is possible to specify sub-second times like -i 0.1.
因此,使用该命令的一个示例将是
redis-cli -p <PORT> --scan --pattern city:* -i 0.01 | xargs redis-cli -p <PORT> unlink
在这里找到一些示例。
或者,可以使用带有 -L 选项(最大行数)的 xargs 来减少阻塞服务对其他命令的影响。
man xargs
[...]
-L number Call utility for every number non-empty lines read.
使用 RedisInsight
RedisInsight 具有“批量操作”功能,并提供了删除键的选项。
- 在“查找键”表单字段中,可以提供一个模式
- 预览窗格将返回要删除的键列表
- 单击“删除”按钮执行删除操作