当前位置: 首页 > article >正文

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

前言

多多点赞,会变好看!

多多留言,会变有钱!

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

一、创建lua脚本:

命名为clear_data.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??:*"

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


http://www.kler.cn/a/152185.html

相关文章:

  • python每日一题——16除自身以外数组的乘积
  • 【动态规划】LeetCode-746LCR 088.使用最小花费爬楼梯
  • f-string字符串格式化方法
  • 学习grdecl文件格式
  • Django回顾1
  • Java学习笔记46——模块化
  • 数据增广【以图像增广为例】
  • 网络爬虫(Python:Requests、Beautiful Soup笔记)
  • 程序/进程替换(讲解)
  • P1025 [NOIP2001 提高组] 数的划分
  • 人工智能三要素:算法、算力、算据(数据)
  • 单链表相关经典算法OJ题:移除链表元素
  • 力扣labuladong——一刷day61
  • lodash常见的方法
  • Zookeeper+Kafka集群
  • 玻色量子事件活动
  • XIAO ESP32S3之模型部署
  • C语言之结构体详解
  • 网站提示不安全?
  • IDEA性能优化的相关配置