在 CentOS 上给 Redis 做“限速”,通常不是 Redis 原生直接支持“QPS 限速”,而是通过多种方式组合来实现。下面按常见场景给你说明配置方法。
编辑 Redis 配置文件(通常是 /etc/redis.conf 或 /etc/redis/redis.conf):
maxclients 1000
重启 Redis:
systemctl restart redis
超过该连接数,新连接会被拒绝。
maxmemory 2gb
maxmemory-policy allkeys-lru
在应用代码里用 Redis 实现限速,例如:
# 使用 INCR + EXPIRE
INCR rate_limit:user:123
EXPIRE rate_limit:user:123 1
如果值 > 10,则拒绝请求。
或用 Lua 脚本保证原子性。
支持命令:
CL.THROTTLE user:123 100 10 1
安装方式(CentOS):
git clone https://github.com/brandur/redis-cell
cd redis-cell
make
在 redis.conf 中加载:
loadmodule /path/to/libredis_cell.so
iptables -A INPUT -p tcp --dport 6379 -m limit --limit 100/s -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
这是“连接/包”级别限速,不够精细。
| 场景 | 推荐方式 |
|---|---|
| 接口级限速 | Redis + 应用逻辑 |
| 用户级限速 | Redis 计数器 / Redis Cell |
| 防护攻击 | iptables + maxclients |
| 生产高并发 | Redis + 网关限流 |
如果你能说明:
我可以给你更具体的配置示例。