acdr/cwzoonest/cwzoonest-api/target/classes/rateLimiter.lua

20 lines
441 B
Lua
Raw Normal View History

2024-09-05 17:58:29 +08:00
-- 限流Lua脚本
-- KEYS[1] 是键ARGV[1] 是限流次数ARGV[2] 是限流时间
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local timeout = tonumber(ARGV[2])
-- 当前计数
local current = redis.call('incr', key)
if current == 1 then
-- 如果是第一次访问,设置过期时间
redis.call('expire', key, timeout)
return 1
end
-- 检查是否超过限流
if current > limit then
return 0
end
return 1