1.流程图
2.luna脚本
local key = "rate.limit:" .. KEYS[1] --限流KEY
local limit = tonumber(ARGV[1]) --限流大小
local time = tonumber(ARGV[2]) --时间
local value = tonumber(redis.call('INCRBY', key,"1"))
local expireTime = tonumber(redis.call('ttl', key))
if expireTime == -1 then --如果没有设置超时时间
redis.call("expire", key,time)
return value
elseif value > limit then --如果超出限流大小
return 0
else
return value
end