温馨提示×

centos怎么优化redis配置

小樊
32
2026-09-14 23:37:51
栏目: 云计算

在 CentOS 上优化 Redis 配置,通常从 操作系统层面Redis 自身配置内存与持久化策略网络与连接 几个方面入手。下面给你一套实用、可落地的优化方案。


一、系统层面优化(CentOS)

1. 关闭透明大页(THP)

Redis 官方强烈建议关闭 THP,否则会导致延迟抖动。

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

永久生效(CentOS 7/8):

vim /etc/rc.local
# 添加上面两行
chmod +x /etc/rc.local

2. 调整文件描述符限制

Redis 连接数高时需要更大的 fd。

vim /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

3. 内核参数优化

vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

生效:

sysctl -p

vm.overcommit_memory=1 可避免 fork 时内存分配失败


二、Redis 核心配置优化

配置文件一般位于:

/etc/redis.conf

1. 绑定与保护

bind 0.0.0.0
protected-mode no

生产环境建议只绑内网 IP,并加密码


2. 最大内存限制

maxmemory 4gb
maxmemory-policy allkeys-lru

常见策略:

  • allkeys-lru:所有 key LRU(最常用)
  • volatile-lru:只淘汰带过期时间的 key
  • noeviction:写满直接报错(不推荐)

3. 持久化优化

RDB(快照)

save 900 1
save 300 10
save 60 10000

如果容忍少量数据丢失:

save 300 1000

AOF(日志)

appendonly yes
appendfsync everysec

everysec 是性能与安全的折中


4. 关闭耗时功能(视情况)

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

三、性能与并发优化

1. 连接与线程

tcp-backlog 65535
timeout 0
tcp-keepalive 60

Redis 6+ 可开启 IO 线程:

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

多核机器效果明显


2. 禁用危险命令(安全+性能)

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

四、内存与数据结构优化建议

  • 使用 Hash / Ziplist 代替大量小 key
  • 避免大 key(> 10MB)
  • 合理设置 TTL
  • 使用 Pipeline 减少网络往返

查看大 key:

redis-cli --bigkeys

五、监控与调优工具

redis-cli info memory
redis-cli info stats
redis-cli slowlog get

常用监控指标:

  • used_memory
  • evicted_keys
  • instantaneous_ops_per_sec
  • latency

六、示例:高并发 Redis 配置(参考)

bind 0.0.0.0
maxmemory 8gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
tcp-backlog 65535
io-threads 4
io-threads-do-reads yes

如果你能告诉我:

  • CentOS 版本
  • Redis 版本
  • 单机 / 集群
  • 主要使用场景(缓存 / 队列 / 数据库)

我可以给你一套 更精准的配置模板

0