限流脚本(window=60000ms,limit=100):local key = KEYS[1]

local now = tonumber(ARGV[1])

local window = tonumber(ARGV[2])

local limit = tonumber(ARGV[3])

redis.call('ZADD', key, now, now)

redis.call('ZREMRANGEBYSCORE', key, 0, now - window)

local count = tonumber(redis.call('ZCARD', key))

redis.call('EXPIRE', key, math.floor(window/1000))

if count <= limit then

return {1, limit - count}

else

return {0, 0}

end

执行示例:EVALSHA <sha> 1 rate:uid:123 1690000000000 60000 100

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部