温馨提示×

怎么优化CentOS Redis

小樊
39
2026-08-29 18:54:47
栏目: 云计算

优化 CentOS 上的 Redis 一般从 系统层面、Redis 配置、内存与持久化、网络与安全、监控与压测 几个方面入手。下面给你一套实战型优化清单,适合生产环境。


一、系统层面优化(CentOS)

1️⃣ 关闭 Transparent Huge Pages(必须)

THP 对 Redis 性能影响很大。

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

永久生效:

vi /etc/rc.d/rc.local

加入上述两行,并:

chmod +x /etc/rc.d/rc.local

2️⃣ 调整 Linux 内核参数

vi /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 防止 fork 失败
swappiness=1 减少 swap 使用


3️⃣ 设置 ulimit

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

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

路径一般为:/etc/redis.conf/etc/redis/redis.conf

1️⃣ 网络与连接

bind 0.0.0.0   # 生产建议绑定具体 IP
port 6379
tcp-backlog 2048
timeout 0
tcp-keepalive 60

2️⃣ 内存优化(核心)

maxmemory 4gb        # 根据服务器内存设置
maxmemory-policy allkeys-lru

常见淘汰策略:

策略 说明
allkeys-lru 最常用
volatile-lru 只淘汰有过期时间的 key
noeviction 不淘汰(写满报错)

3️⃣ 持久化优化(根据场景)

✅ 缓存场景(推荐)

save ""
appendonly no

✅ 需要持久化

appendonly yes
appendfsync everysec

避免:

appendfsync always   # 极低性能

4️⃣ 关闭不必要的功能

databases 1
rename-command FLUSHALL ""
rename-command FLUSHDB ""

三、Redis 性能优化技巧

1️⃣ 使用 Pipeline

减少 RTT,提升吞吐量。

2️⃣ 避免大 Key

redis-cli --bigkeys

❌ 避免:

  • 超大 string
  • 超大 hash / zset / list

✅ 拆分、压缩、分片


3️⃣ 使用 Hash 存储对象

HSET user:1001 name Tom age 18

比多个 string 更省内存。


4️⃣ 启用 lazy-free(推荐)

lazyfree-lazy-expire yes
lazyfree-lazy-eviction yes
lazyfree-lazy-server-del yes

避免删除大 key 阻塞。


四、安全与稳定

1️⃣ 设置密码

requirepass yourpassword

2️⃣ 禁止 root 运行 Redis

ps -ef | grep redis

✅ 使用专用用户:

useradd -r -s /sbin/nologin redis

五、监控与压测

1️⃣ 查看性能

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

重点看:

  • used_memory
  • keyspace_hits/misses
  • instantaneous_ops_per_sec

2️⃣ 压测

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

六、常见性能问题速查

问题 原因
CPU 高 大 key / 复杂命令
内存涨得快 没限制 maxmemory
延迟高 AOF always / swap
fork 失败 overcommit_memory 未设置

七、推荐生产标准配置(示例)

maxmemory 8gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
tcp-backlog 2048
requirepass xxx
lazyfree-lazy-eviction yes

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

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

我可以 直接帮你定制一份 redis.conf

0