Redis 限流器实现优化
背景
在高并发场景下,Redis 常被用于实现限流器。本文将介绍三种模式的实现,并分析它们的优缺点,最终提供基于 Redis 6.2 新特性的优化方案。
模式一:简单计数法
实现原理
- 使用
INCR对键进行递增操作。 - 如果键的值超过限流阈值(如 10),则拒绝请求。
- 使用
EXPIRE设置键的过期时间。
代码示例
local current
current = redis.call("incr", KEYS[1])
if tonumber(current) > 10 then
return "ERROR: too many requests per second"
else
redis.call("expire", KEYS[1], 1)
return "ALLOW: request accepted"
end
2025/8/8...大约 3 分钟