-- 限流脚本
local key = KEY[1] -- 限流KEY(1秒1个)
local limite = tonumber(ARGV[1]) -- 限流大小
local current = tonumber(redis.call("INCRBY",key, "1")) -- 请求数加1
if current > limite then
return 0
elseif current == 1 then
redis.call("EXPIRE", key, "2")
end
return 1
脚本说明(Lua小白必备)
①在Lua脚本中执行Redis命令:redis.call()
②tonumber
是Lua的一个函数,这个函数会尝试将它的参数转换为数字
③ARGV[1]表示传递给脚本的第一个参数的值
-- 限流脚本
local key = KEY[1] -- 限流KEY(1秒1个)
local limite = tonumber(ARGV[1]) -- 限流大小
local current = tonumber(redis.call("GET",key) or "0") -- 之前请求数
if current + 1 > limite then
return 0
else -- 请求数加1,并设置2秒过期
redis.call("INCRBY", key, "1")
redis.call("EXPIRE", key, "2")
return 1
end