温馨提示×

centos如何优化redis

小樊
45
2026-07-08 07:07:17
栏目: 云计算

在 CentOS 上优化 Redis,通常从 操作系统层面、Redis 配置、内存/持久化策略、网络与客户端 几个方面入手。下面给你一套比较系统、可落地的优化方案(适用于 CentOS 7/8、Rocky Linux 等)。


一、操作系统层面优化(CentOS)

1. 关闭透明大页(THP)

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

# 临时关闭
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 永久关闭(CentOS 7)
cat >> /etc/rc.d/rc.local <<EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
EOF
chmod +x /etc/rc.d/rc.local

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

Redis 连接数多时需要。

# 临时
ulimit -n 65535

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

3. 内核参数优化

编辑 /etc/sysctl.conf

vm.overcommit_memory = 1
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048
vm.swappiness = 1

生效:

sysctl -p

overcommit_memory=1 对 Redis 非常重要,避免 fork 失败


4. 使用 tuned(推荐)

yum install -y tuned
tuned-adm profile latency-performance

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

1. 绑定与端口

bind 0.0.0.0
port 6379

生产环境建议:

  • 不要暴露公网
  • 使用防火墙或 VPC

2. 内存优化

设置最大内存

maxmemory 8gb
maxmemory-policy allkeys-lru

常用策略:

  • allkeys-lru:推荐
  • volatile-lru:仅过期 key
  • noeviction:写满报错(不推荐)

3. 持久化优化(根据场景选择)

方案 A:高性能(缓存)

save ""
appendonly no

方案 B:高可靠(数据重要)

appendonly yes
appendfsync everysec

不建议 appendfsync always(性能差)


4. 关闭或优化 RDB

如果只用 AOF:

save ""

5. 网络与连接

tcp-backlog 2048
timeout 0
tcp-keepalive 60

6. 禁用或保护危险命令

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""

三、内存与数据结构优化

1. 使用合适的数据结构

  • String:小对象
  • Hash:对象数据
  • Set / ZSet:去重、排行榜
  • Bitmap / HyperLogLog:统计

2. 开启内存优化

hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

3. 避免大 Key

  • 单个 key 不建议超过 10KB
  • 使用 redis-cli --bigkeys 检查

四、CPU 与线程优化

1. 绑定 CPU(可选)

taskset -c 0,1 redis-server /etc/redis.conf

2. Redis 6+ 开启 IO 多线程(仅网络)

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

仅适用于高 QPS 场景


五、监控与压测

1. 查看性能

redis-cli info memory
redis-cli info stats
redis-cli info cpu

2. 延迟检测

redis-cli --latency
redis-cli --latency-history

3. 压测

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

六、常见性能问题排查

现象 原因 解决
延迟抖动 THP 关闭 THP
OOM maxmemory 未设置 设置 maxmemory
fork 失败 overcommit_memory 设为 1
CPU 高 大 key / Lua 拆分 key
连接数不够 somaxconn 调大

七、推荐生产配置模板(示例)

bind 0.0.0.0
port 6379
maxmemory 8gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
tcp-backlog 2048
timeout 0
tcp-keepalive 60

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

  • Redis 版本
  • 内存大小
  • 是否做缓存 or 存储
  • QPS 大概多少

我可以 直接给你一份针对你环境的 redis.conf 完整优化配置

0