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. 超大数据量可拆分多次执行,避免内存溢出
相关推荐
得物技术21 小时前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
christine-rr1 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
可涵不会debug1 天前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom1 天前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
麦兜*1 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
Slaughter信仰1 天前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十章知识点问答(10题)
java·jvm·数据库
麦兜*1 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
-Xie-1 天前
Mysql杂志(十六)——缓存池
数据库·mysql·缓存
七夜zippoe1 天前
缓存与数据库一致性实战手册:从故障修复到架构演进
数据库·缓存·架构