- 首页 >
- 问答 >
-
云计算 >
- Redis在CentOS上如何优化设置
Redis在CentOS上如何优化设置
小樊
32
2025-12-11 12:57:26
Redis 在 CentOS 上的优化设置
一 系统层优化
- 文件描述符与进程限制
- 在 /etc/security/limits.conf 增加:
- redis soft nofile 65535
- redis hard nofile 65535
- 在 systemd 服务单元中设置(如 /usr/lib/systemd/system/redis.service 或 /etc/systemd/system/redis.service.d/limits.conf):
- 执行:
systemctl daemon-reload && systemctl restart redis
- 内核网络与端口
- 在 /etc/sysctl.conf 增加:
- net.core.somaxconn = 16384
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.ip_local_port_range = 1024 65535
- vm.overcommit_memory = 1
- 执行:
sysctl -p
- Transparent Huge Pages(THP)
- 临时:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 永久:在 /etc/rc.local 追加同一行,并赋予执行权限(
chmod +x /etc/rc.local)
- 说明
- 提升 somaxconn 与 tcp_max_syn_backlog 有助于应对突发连接与高并发;overcommit_memory=1 可降低 fork 失败风险;禁用 THP 可显著减少 fork 与写时复制带来的延迟波动。
二 Redis 配置优化
- 核心内存与淘汰
- 设置最大可用内存(按机器内存与业务缓存比例):
maxmemory 4gb
- 选择淘汰策略(通用场景优先):
maxmemory-policy allkeys-lru(或 volatile-lru/allkeys-lfu 视键是否设置过期而定)
- 持久化策略(按业务取舍)
- RDB(快照):
save 900 1、save 300 10、save 60 10000
dbfilename dump.rdb、dir /var/lib/redis
- AOF(追加日志,推荐与 RDB 同时开启以兼顾性能与可靠性):
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec(最多丢失约 1 秒数据,性能与可靠性平衡)
- 自动重写:
auto-aof-rewrite-percentage 100、auto-aof-rewrite-min-size 64mb
- 网络与连接
bind 127.0.0.1(仅本机)或按需绑定内网地址;远程访问务必配合 TLS/密码/防火墙
port 6379
tcp-backlog 511
timeout 300(空闲超时,避免僵尸连接)
requirepass your_password(强密码与访问控制)
- 诊断与可观测性
slowlog-log-slower-than 10000(单位:微秒)
slowlog-max-len 128
- 重要提示
- 同时启用 RDB+AOF 时,重启恢复以 AOF 为准(数据更完整);RDB 适合快速恢复与备份,AOF 提供更高数据安全性。
三 客户端与运维实践
- 使用连接池与复用连接,避免频繁建连/断连;合理设置超时与重试策略。
- 批量操作使用 Pipeline 降低往返时延;遍历大键空间用 SCAN 替代 KEYS(避免阻塞)。
- 控制 大 Key/大 Value 与 热点 Key:拆分大对象、打散热点、压缩存储(权衡 CPU 与内存)。
- 数据结构选型与过期策略:为场景选择合适结构(如 Hash 存储对象),为会话/临时数据设置 TTL。
- 监控与压测:用
INFO 持续观察命中率、延迟、慢查询;用 redis-benchmark -q -n 100000 -c 50 -P 16 做基线压测并据此迭代参数。
四 高可用与扩展
- 数据与并发增长时,采用 Redis 集群 或 主从复制 + 哨兵 提升可用性与水平扩展能力;跨机房部署注意网络时延与一致性取舍。
五 快速检查清单
- limits.conf 与 systemd 的 nofile ≥ 65535 已生效;
ulimit -n 与 cat /proc/<redis_pid>/limits 一致。
- sysctl 参数已写入并
sysctl -p 生效;cat /proc/sys/net/core/somaxconn 与设置一致。
- THP 已禁用:
cat /sys/kernel/mm/transparent_hugepage/enabled 输出为 never。
- Redis 配置已调整并重启:
maxmemory、maxmemory-policy、appendonly yes、appendfsync everysec、save 策略、slowlog、requirepass、bind、tcp-backlog、timeout。
- 持久化文件与目录权限正确:
/var/lib/redis 可写,RDB/AOF 文件定期备份。
- 远程访问仅在内网开放,配合 防火墙/TLS/ACL;压测与监控到位,慢查询与命中率处于合理区间。