温馨提示×

centos redis配置如何优化

小樊
45
2026-09-05 23:51:30
栏目: 云计算

在 CentOS 上优化 Redis 配置,通常从操作系统层面、Redis 配置文件、内存与持久化策略、集群与高可用几个维度来做。下面给你一套比较实用、可落地的优化建议(基于 CentOS 7/8 + Redis 5/6/7)。


一、操作系统层优化(非常重要)

1. 关闭透明大页(THP)

Redis 官方明确建议关闭 THP,否则会造成延迟抖动。

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久生效(CentOS):

# /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
chmod +x /etc/rc.d/rc.local

2. 调整系统最大文件描述符

Redis 连接数多时需要。

# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

3. 内核参数优化

# /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 8192

生效:

sysctl -p

vm.overcommit_memory=1 可避免 bgsave 时 OOM


二、Redis 核心配置优化(redis.conf)

1. 绑定与端口

bind 0.0.0.0
port 6379
protected-mode no   # 生产建议用防火墙+密码

2. 最大内存限制(必配)

maxmemory 8gb
maxmemory-policy allkeys-lru

常见策略:

  • allkeys-lru:通用缓存
  • volatile-lru:只淘汰带 TTL 的 key
  • noeviction:写满直接报错(不推荐)

3. 持久化优化

RDB(快照)

save 900 1
save 300 10
save 60 10000

如果纯缓存:

save ""

AOF(日志)

appendonly yes
appendfsync everysec

always 太慢,no 不安全,生产用 everysec

AOF 重写

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

三、性能与线程优化

1. 关闭慢日志影响

slowlog-log-slower-than 10000
slowlog-max-len 128

2. Redis 6+ 多线程(IO 线程)

io-threads 4
io-threads-do-reads yes

只对网络 IO 有效,命令执行仍是单线程

3. 禁用不必要的功能

lua-time-limit 5000

四、安全与稳定性

1. 设置密码

requirepass yourstrongpassword

2. 重命名危险命令

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""

五、监控与维护

1. 常用监控命令

redis-cli info memory
redis-cli info stats
redis-cli info persistence

2. 避免大 key

redis-cli --bigkeys

3. 定期检查碎片

redis-cli info memory | grep mem_fragmentation_ratio

大于 1.5 考虑重启或 activedefrag


六、生产架构建议

  • 单实例内存 ≤ 10–20GB
  • 高并发用 Redis Cluster
  • 主从 + Sentinel 保证高可用
  • 持久化盘用 SSD
  • 不和 MySQL / ES 混部

七、最小优化示例(缓存场景)

maxmemory 8gb
maxmemory-policy allkeys-lru
save ""
appendonly no
io-threads 4

如果你愿意,可以告诉我:

  • Redis 版本
  • 单机还是集群
  • 主要用途(缓存 / 队列 / 会话)
  • 数据量和 QPS

我可以直接帮你出一份可复制的 redis.conf 模板

0