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. 超大数据量可拆分多次执行,避免内存溢出
相关推荐
用户3169353811832 天前
Java连接Redis
redis
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
小小工匠4 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
麦聪聊数据4 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
许彰午4 天前
39_Java单元测试JUnit入门
java·junit·单元测试
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡4 天前
【MySQL数据库】数据类型与表约束
数据库·mysql