Redis批量删除Key的三种高效方法
方法一:使用通配符匹配删除
通过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
超大数据量可拆分多次执行,避免内存溢出
————————————————