Redis——使用lua脚本模糊删除数据

前言

多多点赞,会变好看!

多多留言,会变有钱!

本文适用于Redis集群,是否适用单机模式未做测试!

一、创建lua脚本:

命名为clear_data.lua

Lua 复制代码
redis.call("select",0)

--游标的id
local cursor = 0
--查找删除的key的数量
local keyNum = 0
repeat
  --使用scan搜索,cursor=0的时候标识一个新的迭代期,服务器返回0的时候表示迭代已经结束
  local res = redis.call("scan",cursor,"MATCH",KEYS[1])
  if(res ~= nil and #res>=0) then
    cursor = tonumber(res[1])
    local ks = res[2]
    if(ks ~= nil and #ks>0) then
      redis.replicate_commands()
      --循环删除当前迭代器迭代出的数据
      for i=1,#ks,1 do
        local key = tostring(ks[i])
        --使用UNLINK删除,区别于del的是这个是异步执行的
        --这条指令要版本大于4.0.0 小于4.0.0就使用del
        redis.call("UNLINK",key)
      end
      --统计删除的key的数量
      keyNum = keyNum + #ks
    end
  end
--当服务器返回0的时候,跳出循环
until( cursor <= 0 )

return keyNum

二、执行命令

命令:/Redis路径/redis-cli -c -h IP -p 端口 --eval /脚本路径/clear_data.lua "模糊匹配值"

案例:/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6379 --eval /root/clear_data.lua "*test??:*"

模糊匹配值一定要写正确,不然删错可就麻烦了!!

相关推荐
啊吧怪不啊吧21 小时前
SQL之参数类型讲解
数据库·sql
GIS数据转换器21 小时前
带高度多边形,生成3D建筑模型,支持多种颜色或纹理的OBJ、GLTF、3DTiles格式
数据库·人工智能·机器学习·3d·重构·无人机
盒马coding21 小时前
第19节-非规范化数据类型-Drop-Type
数据库·postgresql
一人の梅雨1 天前
大麦网关键词列表接口的产业级实现:从演出聚合到市场趋势预测的全维度技术方案
大数据·数据库·人工智能
专业软件系统开发1 天前
药品说明书查询系统源码 本地数据库 PHP版本
数据库·查询系统源码·说明书查询源码
冉冰学姐1 天前
SSM足球爱好者服务平台i387z(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·足球爱好者服务平台
大飞记Python1 天前
部门管理|“编辑部门”功能实现(Django5零基础Web平台)
前端·数据库·python·django
清风6666661 天前
基于单片机的智能收银机模拟系统设计
数据库·单片机·毕业设计·nosql·课程设计
资深低代码开发平台专家1 天前
PostgreSQL 18 发布
数据库·postgresql
007php0071 天前
百度面试题解析:微服务架构、Dubbo、Redis及其一致性问题(一)
redis·百度·docker·微服务·容器·职场和发展·架构