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))

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

相关推荐
瑞士卷@12 小时前
MyBatis入门到精通(Mybatis学习笔记)
java·数据库·后端·mybatis
白云偷星子12 小时前
MySQL笔记13
数据库·笔记·mysql
施嘉伟12 小时前
静默安装金仓数据库,到底有多简单?
数据库
Tapdata12 小时前
实时物化视图的新路径:从传统 Join 到跨源实时查询
数据库
optimistic_chen12 小时前
【Java EE进阶 --- SpringBoot】Mybatis - plus 操作数据库
数据库·spring boot·笔记·java-ee·mybatis·mybatis-plus
FJW02081413 小时前
关系型数据库大王Mysql——DDL语句操作示例
数据库·mysql
言之。13 小时前
Chroma 开源的 AI 应用搜索与检索数据库(即向量数据库)
数据库·人工智能·开源
来旺13 小时前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
摇滚侠13 小时前
Spring Boot 3零基础教程,yml文件中配置和类的属性绑定,笔记15
spring boot·redis·笔记
摇滚侠13 小时前
Spring Boot 3零基础教程,WEB 开发 HTTP 缓存机制 笔记29
spring boot·笔记·缓存