Redis 运维监控与调优
1.1 Redis 配置优化
🎯 常见优化目标
🧠 内存管理参数调优
maxmemory
设置 Redis 使用的最大内存。
Redis 内存使用超过该限制后,才会触发清除策略。
maxmemory-policy
定义内存淘汰策略:
策略 |
说明 |
noeviction |
达到内存后拒绝写入 |
allkeys-lru |
所有 key 中淘汰最近最少使用的 |
volatile-lru |
设置了 TTL 的 key 中淘汰最近最少使用的 |
allkeys-random |
随机淘汰所有 key |
volatile-ttl |
TTL 最短的 key 被淘汰 |
Python 示例(设置配置并连接):
1 2 3 4 5
| import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0) r.config_set('maxmemory', '100mb') r.config_set('maxmemory-policy', 'allkeys-lru')
|
🧨 TTL 合理设置
设置过期时间避免内存泄漏。
1 2
| r.set('session:user:1', 'data', ex=30)
|
1.2 性能监控
🔍 使用 INFO
命令全面查看状态
1 2
| redis-cli INFO memory redis-cli INFO clients
|
Python 示例:
1 2
| info = r.info() print(info['used_memory_human'])
|
🔍 使用 MONITOR
实时查看请求
适用于调试,但对性能有影响,不建议线上使用。
🐢 SLOWLOG
分析慢命令
Python 示例:
1 2 3
| slowlogs = r.slowlog_get() for log in slowlogs: print(log)
|
📈 接入 Prometheus + Grafana(图表可视化)
安装 redis_exporter
启动 Redis Exporter:
1
| ./redis_exporter -redis.addr=redis://localhost:6379
|
在 Prometheus 中添加 job:
1 2 3
| - job_name: 'redis' static_configs: - targets: ['localhost:9121']
|
在 Grafana 中导入 Redis Dashboard 模板(ID:763)
1.3 容灾与高可用
💡 主从复制 + 哨兵模式
Redis 主从复制结构图:
1 2 3 4 5 6 7 8
| +---------+ | Master | +---------+ / \ / \ +----------+ +----------+ | Replica1 | | Replica2 | +----------+ +----------+
|
启用主从复制配置:
1 2
| replicaof 127.0.0.1 6379
|
哨兵配置示例:
1 2 3 4 5
| sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000 sentinel parallel-syncs mymaster 1
|
🧰 启动方式:
1
| redis-sentinel sentinel.conf
|
❤️🔥 Keepalived + VIP 高可用部署(实战推荐)
- Redis Master 设置虚拟 IP (VIP)
- Keepalived 监控主节点
- 主挂时自动切换到副本,并绑定 VIP
附加:多活容灾架构探索
Redis 原生不支持多活,但企业可结合一致性哈希、Kafka + Redis 消费模型等方式,实现弱一致性下的多机热备。
✅ 总结
模块 |
工具与命令 |
实战技巧 |
内存优化 |
maxmemory , maxmemory-policy |
设置 LRU、合理设置 TTL |
性能监控 |
info , monitor , slowlog |
接入 Prometheus,搭配 Grafana |
高可用 |
主从、哨兵、keepalived |
故障切换、VIP 自动恢复 |