一点一滴成长

导航

Redis脚本

  Redis支持使用Lua编写脚本传到Redis服务中执行,在脚本中可以通过redis.call()函数来调用Redis命令。使用脚本的好处有:

    

  有时候一系列的Redis操作可能比较麻烦,可以将这些操作写入到Lua脚本中来让Redis执行,也就是通过编写Lua脚本可使得操作Redis更加简单。

  以下是脚本文件 scriptName.lua中的Lua代码,实现了不使用事务来完成一个IP地址在10秒内最多访问3次的功能。可以使用Redis客户端来执行这个脚本,如输入命令redis-cli --eval scriptName.lua rate.limiting:127.0.0.1 , 10 3 来执行scriptName.lua脚本(需要注意逗号前后的空格不能省略),代码中的KEYS[1]即是rate.limiting:127.0.0.1,ARGV[1]是10,ARGV[2]是3。

    auto times = redis.call('incr', KEYS[1]) //调用INCR命令获得访问次数
    if times == 1 then //第一次访问
        redis.call('expire', KEYS[1], ARGV[1]) //调用EXPIRE命令设置生存时间
    end
    if times > tonumber(ARGV[2])then
        return 0; //访问次数超限
    end
        return 1; //正常访问

   

  

  

 

posted on 2021-12-29 10:54  整鬼专家  阅读(308)  评论(0编辑  收藏  举报