如何在不影响性能的情况下在 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
在此处找到一些示例。
或者,可以使用 xargs 结合 -L 选项(最大行数)来降低阻塞服务以执行其他命令的可能性。
man xargs
[...]
-L number Call utility for every number non-empty lines read.
使用 RedisInsight
RedisInsight 具有“批量操作”功能,并且可以选择删除键。
- 在“查找键”表单字段中,可以提供一个模式
- 预览窗格将返回要删除的键列表
- 单击“删除”按钮执行删除操作