Redis批量删除Key的三种方式

Redis批量删除Key的三种高效方法

方法一:使用通配符匹配删除

通过KEYS命令配合通配符筛选键值,再传递给DEL命令批量删除:

bash 复制代码
redis-cli KEYS "user:*" | xargs redis-cli DEL

注意 :当键数量超过10^4时,建议分批处理。使用SCAN替代KEYS可避免阻塞:

bash 复制代码
redis-cli --scan --pattern "cache:*" | xargs -L 1000 redis-cli DEL
方法二:Lua脚本原子操作

通过执行Lua脚本实现原子化批量删除(Redis 2.6+支持):

lua 复制代码
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

执行命令:

bash 复制代码
redis-cli EVAL "$(cat delkeys.lua)" 0 "order_*"
方法三:管道批量处理

利用redis-cli管道特性实现高效删除:

bash 复制代码
redis-cli --scan --pattern "temp_*" | \
awk '{print "DEL "$0}' | \
redis-cli --pipe

方案对比与选型建议

方式 适用场景 风险控制 性能影响
KEYS+DEL 测试环境、小数据量
SCAN+DEL 生产环境、大数据量
Lua脚本 需要原子性、复杂逻辑

注意事项:

  1. 所有删除操作不可逆,建议先备份数据
  2. 复杂匹配模式建议用SCAN替代KEYS
  3. 超大数据量可拆分多次执行,避免内存溢出
相关推荐
金色天际线-16 小时前
mysql全量+增量备份脚本及计划任务配置
数据库·mysql
zym大哥大16 小时前
MySQL用户管理
数据库·mysql
对着晚风做鬼脸16 小时前
MySQL 运维知识点(十六)---- 读写分离
运维·数据库·mysql·adb
老朋友此林16 小时前
高并发下如何保证 Caffeine + Redis 多级缓存的一致性问题?MySQL、Redis 缓存一致性问题?
数据库·redis·缓存
会飞的鱼_12316 小时前
MySQL主主复制+Keepalived高可用集群搭建与故障切换实战
数据库·mysql
gsfl19 小时前
Redis分布式锁
数据库·redis·分布式
Li zlun20 小时前
MySQL 配置管理与日志系统完全指南:从基础到高级优化
数据库·mysql
wzg201621 小时前
vscode 配置使用pyqt5
开发语言·数据库·qt
老朋友此林1 天前
MongoDB GEO 项目场景 ms-scope 实战
java·数据库·spring boot·mongodb
极限实验室1 天前
如何使用 INFINI Gateway 对比 ES 索引数据
数据库