Redis批量删除Key的三种方式小结
作者:姚梦蕾
本文主要介绍了Redis批量删除Key的三种方式小结,包括KEYS+DEL、SCAN+DEL、Lua脚本,需分批处理以减少风险,具有一定的参考价值,感兴趣的可以了解一下
方法一:使用通配符匹配删除
通过KEYS
命令配合通配符筛选键值,再传递给DEL
命令批量删除:
redis-cli KEYS "user:*" | xargs redis-cli DEL
注意:当键数量超过10^4时,建议分批处理。使用SCAN
替代KEYS
可避免阻塞:
redis-cli --scan --pattern "cache:*" | xargs -L 1000 redis-cli DEL
方法二:Lua脚本原子操作
通过执行Lua脚本实现原子化批量删除(Redis 2.6+支持):
local keys = redis.call('KEYS', ARGV[1]) for i=1,#keys,5000 do redis.call('DEL', unpack(keys, i, math.min(i+4999, #keys))) end return #keys
执行命令:
redis-cli EVAL "$(cat delkeys.lua)" 0 "order_*"
方法三:管道批量处理
利用redis-cli管道特性实现高效删除:
redis-cli --scan --pattern "temp_*" | \ awk '{print "DEL "$0}' | \ redis-cli --pipe
方案对比与选型建议
方式 | 适用场景 | 风险控制 | 性能影响 |
---|---|---|---|
KEYS+DEL | 测试环境、小数据量 | 低 | 高 |
SCAN+DEL | 生产环境、大数据量 | 高 | 中 |
Lua脚本 | 需要原子性、复杂逻辑 | 中 | 低 |
注意事项:
- 所有删除操作不可逆,建议先备份数据
- 复杂匹配模式建议用
SCAN
替代KEYS
- 超大数据量可拆分多次执行,避免内存溢出
到此这篇关于Redis批量删除Key的三种方式小结的文章就介绍到这了,更多相关Redis批量删除Key内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!