跳到主要内容

分布式限流(Redis-Cell 等)

常见限流算法与基于 Redis 的实现方式。

算法概览

  • 固定窗口、滑动窗口、令牌桶、漏桶。

Redis-Cell(令牌桶)

  • 内置模块命令示例:
CL.THROTTLE user:123 15 30 60 1
-- key: user:123
-- max_burst=15, tokens_per_interval=30, interval=60s, retry=1

返回值包含是否允许、剩余令牌、重试等待等。

Lua 自定义

  • 使用 INCRBY/EXPIRE 或基于 ZSET 实现滑动窗口;确保原子性在脚本内完成。

实践建议

  • 按业务维度设计 Key(用户/接口/IP),并引入限流白名单。
  • 与熔断器/降级策略联动,提供可观测性指标。