限流器
Lua 脚本
local currentcurrent = redis.call("incr",KEYS[1])if tonumber(current) == 1 thenredis.call("expire",KEYS[1],1)end
列表结构
使用 Redis 的列表结构来代替 INCR 命令,这个方法无须脚本支持
FUNCTION LIMIT_API_CALL(ip)current = LLEN(ip)IF current > 10 THENERROR "too many requests per second"ELSEIF EXISTS(ip) == FALSEMULTIRPUSH(ip,ip)EXPIRE(ip,1)EXECELSERPUSHX(ip,ip)ENDPERFORM_API_CALL()END
