Linux下Redis性能优化实战指南
一 操作系统层优化
echo never > /sys/kernel/mm/transparent_hugepage/enabled并持久化,减少fork与写放大导致的延迟波动。二 Redis配置层优化
save 900 1、save 300 10、save 60 10000),在性能与恢复点目标间平衡;三 持久化与复制的取舍
save ""、appendonly no)以最大化吞吐,但需接受节点重启数据丢失。四 监控与诊断
redis-cli --stat观察ops/sec、used_memory、evicted_keys等;用redis-cli --latency定位 P95/P99 延迟尖峰。SLOWLOG GET识别耗时命令,优化Big Key、热 Key、低效命令(如大范围*KEYS 、无批量的MGET/MSET)。free、vmstat、iostat排查swap、CPU、I/O瓶颈;检查somaxconn与open files是否满足连接需求。五 关键参数与命令清单
| 层面 | 参数/命令 | 建议值或做法 | 目的 |
|---|---|---|---|
| Linux | vm.overcommit_memory | 1 | 保障fork成功 |
| Linux | transparent_hugepage | echo never > /sys/kernel/mm/transparent_hugepage/enabled |
降低fork/写放大延迟 |
| Linux | vm.swappiness | 接近0(视业务而定) | 减少swap |
| Linux | ulimit -n / limits.conf | ≥10032(配合 maxclients) | 避免“文件描述符不足” |
| Linux | net.core.somaxconn / tcp-backlog | 2048 或更高 | 提升高并发连接能力 |
| Redis | maxmemory / policy | 如1gb;allkeys-lru/allkeys-lfu | 容量治理与淘汰 |
| Redis | maxclients | 结合压测设置(如10000) | 控制连接上限 |
| Redis | save / appendonly / appendfsync | save 900 1; save 300 10; save 60 10000;appendonly yes;appendfsync everysec |
持久化折中 |
| Redis | slowlog | SLOWLOG GET |
定位慢查询 |
| Redis | 监控 | redis-cli --stat、--latency |
实时观测与诊断 |