为什么每次incr都要调用 expire
tianleios opened this issue · 1 comments
tianleios commented
else
-- 没有达到阈值 value + 1
redis.call("INCRBY", key, 1)
redis.call("EXPIRE", key, 2)
return curentLimit + 1
end
majintao commented
脚本有问题,应该这么写
local key = KEYS[1]
-- 限流大小
local limit = tonumber(ARGV[1])
-- 获取当前流量大小
local curentLimit = tonumber(redis.call('get', key) or "0")
if curentLimit + 1 > limit then
-- 达到限流大小 返回
return 0;
else
-- 没有达到阈值 value + 1
redis.call("INCRBY", key, 1)
if curentLimit == 0 then
redis.call("EXPIRE", key, 1)
return curentLimit + 1
end