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

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

相关推荐
m0_734949793 分钟前
PHP怎么使用Eloquent Attribute Synthesis属性合成_Laravel多源数据融合【指南】
jvm·数据库·python
风流 少年11 分钟前
向量数据库:Chroma
数据库
qq_3729069312 分钟前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
2401_8822737222 分钟前
CSS 背景色无法撑满父容器?解决浮动导致的高度塌陷问题
jvm·数据库·python
weixin_3812881833 分钟前
jsoup如何读取html
jvm·数据库·python
逆境不可逃34 分钟前
一篇速通Redis 从原理到Java实战(含缓存问题解决方案+集群配置)
数据库·redis·缓存
小卓(friendhan2005)34 分钟前
基于Qt的音乐播放器项目
数据库·c++·qt
2401_8822737240 分钟前
golang如何处理zip压缩包_golang zip压缩包处理思路
jvm·数据库·python
猫的玖月42 分钟前
SQL语法简介
数据库·sql·oracle
tjc199010051 小时前
Golang怎么实现分布式定时任务_Golang如何保证集群中定时任务不重复执行【进阶】
jvm·数据库·python