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

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

相关推荐
石头wang19 小时前
oracle jdbc 依赖以及对dbeaver的性能影响,如何选择oracle驱动, oracle jdbc 驱动
数据库·oracle
weixin_4521595519 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
2301_7903009619 小时前
用Python读取和处理NASA公开API数据
jvm·数据库·python
shuair19 小时前
redis实现布隆过滤器
spring boot·redis·bootstrap
万象.19 小时前
redis持久化:AOF和RDB
数据库·redis·缓存
cheungxiongwei.com20 小时前
深入解析 DNS 缓存与 TTL:工作原理、修改生效机制与优化策略
缓存
tod11320 小时前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
!chen20 小时前
Redis快速实现布隆过滤器
数据库·redis·缓存
2301_7903009620 小时前
数据分析与科学计算
jvm·数据库·python
-XWB-20 小时前
【Oracle】Oracle诊断系列(2/6):锁问题与阻塞分析——解决“卡住”的会话
数据库·oracle