Redis在CentOS上如何优化设置
导读:Redis 在 CentOS 上的优化设置 一 系统层优化 文件描述符与进程限制 在 /etc/security/limits.conf 增加: redis soft nofile 65535 redis hard nofile 65...
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):
- LimitNOFILE=65535
- 执行:
systemctl daemon-reload & & systemctl restart redis
- 在 /etc/security/limits.conf 增加:
- 内核网络与端口
- 在 /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
- 在 /etc/sysctl.conf 增加:
- 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 10000dbfilename dump.rdb、dir /var/lib/redis
- AOF(追加日志,推荐与 RDB 同时开启以兼顾性能与可靠性):
appendonly yesappendfilename "appendonly.aof"appendfsync everysec(最多丢失约 1 秒数据,性能与可靠性平衡)- 自动重写:
auto-aof-rewrite-percentage 100、auto-aof-rewrite-min-size 64mb
- RDB(快照):
- 网络与连接
bind 127.0.0.1(仅本机)或按需绑定内网地址;远程访问务必配合 TLS/密码/防火墙port 6379tcp-backlog 511timeout 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;压测与监控到位,慢查询与命中率处于合理区间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Redis在CentOS上如何优化设置
本文地址: https://pptw.com/jishu/769864.html
