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. 超大数据量可拆分多次执行,避免内存溢出
相关推荐
Valora33 分钟前
简单学会redis
redis
严同学正在努力2 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
#六脉神剑3 小时前
myBuilder新版本(8月,Office文件预览、Oracle数据库支持)
数据库·oracle·开发平台·数字化工具·mybuilder
花青泽3 小时前
5-数据库-SQL注入-联合查询-AND/OR绕过-day13
数据库·sql
踏着七彩祥云的小丑3 小时前
忘记Redis是否安装过时查看
数据库·redis·缓存
Nontee4 小时前
设计模式:模板方法与策略,从“每个字都认识“到能说清它们在干嘛
java·数据库·设计模式
眞bilibili5 小时前
带团队后的日常思考(十七)
数据库
laboratory agent开发5 小时前
智能体多工具串联执行中途失败,部分写入的数据如何回滚
运维·服务器·数据库
段一凡-华北理工大学6 小时前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
☆凡尘清心☆6 小时前
CentOS Stream 9 Redis 7.2.7 源码编译一键安装脚本
linux·运维·redis·centos