温馨提示×

CentOS Redis怎么优化

小樊
33
2026-08-29 18:53:47
栏目: 云计算

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)
cat > /etc/systemd/system/disable-thp.service <<EOF
[Unit]
Description=Disable Transparent Huge Pages

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target
EOF

systemctl enable disable-thp
systemctl start disable-thp

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

Redis 连接数多时需要。

# 查看
ulimit -n

# 永久修改
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

3️⃣ 内核参数优化

vi /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
sysctl -p

overcommit_memory=1 防止 fork 失败
somaxconn 提高连接队列


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

1️⃣ 绑定网卡 & 关闭保护模式(按需)

bind 0.0.0.0
protected-mode no

生产环境务必配合防火墙


2️⃣ 端口 & 后台运行

port 6379
daemonize yes
pidfile /var/run/redis.pid

3️⃣ 内存优化(重点)

✅ 设置最大内存

maxmemory 4gb

✅ 内存淘汰策略(推荐)

maxmemory-policy allkeys-lru

常用策略:

策略 说明
allkeys-lru 所有 key LRU
volatile-lru 过期 key LRU
allkeys-lfu 访问频率淘汰(推荐热点数据)

4️⃣ 持久化优化(RDB / AOF)

✅ 方式一:只使用 RDB(允许丢数据)

save 900 1
save 300 10
save 60 10000
appendonly no

✅ 方式二:AOF(数据安全)

appendonly yes
appendfsync everysec

推荐生产:

appendfsync everysec

❌ 避免使用 always(性能差)


5️⃣ AOF 重写优化

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

三、Redis 性能参数优化

1️⃣ TCP backlog

tcp-backlog 2048

2️⃣ 超时 & 连接数

timeout 0
tcp-keepalive 60
maxclients 10000

3️⃣ 禁用或优化慢日志

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

四、数据结构 & 使用优化(非常重要)

✅ 1️⃣ 合理选择数据结构

场景 推荐
用户在线状态 String / Bitmap
排行榜 Sorted Set
购物车 Hash
消息队列 List / Stream

✅ 2️⃣ 避免大 Key

redis-cli --bigkeys

⚠ 单个 key 建议 < 10KB


✅ 3️⃣ 避免热 Key

  • 拆分 key
  • 本地缓存(如 JVM 缓存)

✅ 4️⃣ Pipeline(减少 RTT)

Java / Python 客户端一定要用 Pipeline。


五、集群 & 高可用(进阶)

场景 方案
单实例 够用
高并发 Redis 主从
大数据量 Redis Cluster
高可用 Sentinel

六、监控 & 调优工具

Redis 自带

redis-cli info memory
redis-cli info stats
redis-cli info replication

第三方

  • Redis Exporter + Prometheus + Grafana
  • redis-stat
  • rdbtools

七、CentOS + Redis 典型生产推荐配置(示例)

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

八、常见性能问题排查

问题 原因
QPS 上不去 大 key / 热 key
延迟高 THP / AOF always
OOM 未限制 maxmemory
CPU 高 复杂命令(KEYS *)

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

  • ✅ Redis 版本
  • ✅ 数据量
  • ✅ QPS 并发
  • ✅ 单实例 / 集群
  • ✅ 是否做持久化

我可以直接帮你 定制一份 Redis 优化配置

0