Redis 限流有哪几种做法?
查看完整题解
参考回答
直接回答
常见有固定窗口计数、滑动窗口、令牌桶和漏桶。固定窗口简单,但边界两侧可能连续通过两批请求。滑动和桶类策略能控制不同形式的突发。
讲清原理
计数和设过期要原子组合,否则客户端崩溃可能留下没有 TTL 的计数键。脚本还应约束键数、时间来源和每次操作的成本。
例子与易错点
登录重试可按账号和来源分开计数。允许短突发的接口可用令牌桶,给业务约定容量与补充速度。
在固定窗口的键上原子计数,首次写入时设置过期。
EVAL "local n=redis.call('INCR',KEYS[1]); if n==1 then redis.call('EXPIRE',KEYS[1],ARGV[1]); end; return n" 1 q59:window 60
EVAL "local n=redis.call('INCR',KEYS[1]); if n==1 then redis.call('EXPIRE',KEYS[1],ARGV[1]); end; return n" 1 q59:window 60
相关题 · 第 60 题、第 72 题
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。