redis限流

1.流程图

redis限流_第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

你可能感兴趣的:(redis限流)