20 lines
441 B
Lua
20 lines
441 B
Lua
-- 限流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
|