Redis实现分布式滑动+滚动窗口限流
### 一、Redis ZSET 实现滑动窗口限流的核心原理 #### 1. **数据结构选择** 使用 Redis 的 **ZSET(有序集合)** 作为核心数据结构: • **Score 字段**:存储请求的时间戳(精确到毫秒或秒) • **Value 字段**:建议使用 UUID 或 MD5 值(避免时间戳重复导致数据覆盖) #### 2. **滑动窗口的原子操作流程** 通过 Lua 脚本实现以下步骤(以 10 秒窗口、最大 100 次请求为例): ```lua -- KEYS[1] = 限流键(如 "rate_limit:/api/login:127.0.0.1") -- ARGV[1] = 窗口大小(秒) -- ARGV[2] = 当前时间戳(秒) -- ARGV[3] = 最大...阅读全文