在 CentOS 上优化 Redis,通常从 操作系统、Redis 配置、内存与持久化、客户端使用、监控 几个方面入手。下面给你一套生产环境常用优化方案,由浅入深。
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
Redis 连接数多时需要。
# 查看
ulimit -n
# 永久修改
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
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 提高连接队列
bind 0.0.0.0
protected-mode no
⚠ 生产环境务必配合防火墙
port 6379
daemonize yes
pidfile /var/run/redis.pid
maxmemory 4gb
maxmemory-policy allkeys-lru
常用策略:
| 策略 | 说明 |
|---|---|
allkeys-lru |
所有 key LRU |
volatile-lru |
过期 key LRU |
allkeys-lfu |
访问频率淘汰(推荐热点数据) |
save 900 1
save 300 10
save 60 10000
appendonly no
appendonly yes
appendfsync everysec
✅ 推荐生产:
appendfsync everysec
❌ 避免使用 always(性能差)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
tcp-backlog 2048
timeout 0
tcp-keepalive 60
maxclients 10000
slowlog-log-slower-than 10000
slowlog-max-len 128
| 场景 | 推荐 |
|---|---|
| 用户在线状态 | String / Bitmap |
| 排行榜 | Sorted Set |
| 购物车 | Hash |
| 消息队列 | List / Stream |
redis-cli --bigkeys
⚠ 单个 key 建议 < 10KB
Java / Python 客户端一定要用 Pipeline。
| 场景 | 方案 |
|---|---|
| 单实例 | 够用 |
| 高并发 | Redis 主从 |
| 大数据量 | Redis Cluster |
| 高可用 | Sentinel |
redis-cli info memory
redis-cli info stats
redis-cli info replication
redis-statrdbtoolsbind 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 优化配置 ✅