redis如何批量删除key

在redis-cli或者rdm可视化工具中删除

执行命令行:DEL keyword1:keyword2:Id:7316*

表示删除形如 keyword1:keyword2:Id:7316123222,keyword1:keyword2:Id:7316123223的key,在redis中存储的key一般是前面都相同的,后面为变量

lua脚本删除

如果数据量巨大时,比如几百万key或者十几个G左右的数据,执行del会导致redis卡死和效率过低

此时通过lua脚本可以高效的批量删除key

本文通过python示例,执行lua脚本批量删除key

python 复制代码
import redis
import time
# 连接到 Redis
r = redis.Redis(host='localhost', port=3306, password="password",db=0)

# 定义 Lua 脚本
lua_script = """
local keys = redis.call('KEYS', 'keyword1:keyword2:Id:7316*')
for _, key in ipairs(keys) do
    redis.call('DEL', key)
end
return #keys
"""
start = time.time()

# 执行 Lua 脚本
result = r.eval(lua_script, 0)
end = time.time()
time_range = float(end-start)
print(f"Deleted {result} keys.")
print("耗时{} s".format(time_range))

执行完毕后等待删除完毕即可。

相关推荐
Teable任意门互动8 小时前
深度解析:AI 赋能开源多维表格,实现企业全场景数据整合与高效应用
数据库·人工智能·低代码·信息可视化·开源·数据库开发
牧羊狼的狼8 小时前
高并发会带来哪些问题,如何解决?
缓存·高并发
无小道8 小时前
Redis——哈希类型相关指令
redis·算法·哈希算法
DevOpenClub8 小时前
职教高考及高职分类招生控制线 API 接口
java·数据库·高考
funnycoffee1238 小时前
华为S5736交换机3层ECMP负载方式
linux·服务器·数据库
添砖java‘’8 小时前
MySQL复合查询
数据库·mysql
@大迁世界8 小时前
Prompt 缓存,一次讲明白
缓存·prompt
星川水月8 小时前
Access数据库快速入门——外部数据导入和SQL简单查询
数据库·sql·access
清平乐的技术专栏8 小时前
一文读懂Kafka中的“消费”(对标MySQL数据库)
数据库·mysql·kafka