温馨提示×

centos redis优化如何配置

小樊
44
2026-09-02 20:03:20
栏目: 云计算

在 CentOS 上优化 Redis,通常从系统层、Redis 配置、内存与持久化、内核参数、监控几个方面入手。下面给出一套生产环境常用优化方案(以 CentOS 7/8 + Redis 6/7 为例)。


一、系统层优化(CentOS)

1. 关闭透明大页(THP)

Redis 官方强烈建议关闭 THP,避免延迟抖动。

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

永久生效:

# CentOS 7
vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

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

2. 调整文件描述符限制

Redis 连接数高时需要。

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

Redis 服务本身:

vi /etc/systemd/system/redis.service
# 或在 /usr/lib/systemd/system/redis.service
[Service]
LimitNOFILE=65535
systemctl daemon-reload
systemctl restart redis

3. 内核参数优化

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

说明:

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

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

1. 绑定与保护

bind 0.0.0.0
protected-mode no
port 6379

(生产建议只绑内网 IP)


2. 最大内存限制

maxmemory 8gb
maxmemory-policy allkeys-lru

常用策略:

  • allkeys-lru:通用缓存
  • volatile-lru:只淘汰带 TTL 的 key
  • noeviction:不淘汰(写满报错)

3. 持久化优化

RDB(快照)

save 900 1
save 300 100
save 60 10000

AOF(推荐开启)

appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

若纯缓存可关 AOF


4. 后台进程 & 日志

daemonize yes
logfile /var/log/redis/redis.log

5. 慢查询日志

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

三、内存与性能优化

1. 使用合适数据结构

  • Hash 代替多个 String
  • 合理设置 TTL
  • 避免大 Key(>10MB)

2. 禁用或控制危险命令

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

3. 多实例(高核机器)

  • 单实例不利用多核
  • 可部署多个 Redis 实例 + 客户端分片

四、监控与维护

1. 常用命令

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

2. 监控工具

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

五、示例:典型生产配置(摘要)

bind 10.0.0.10
port 6379
daemonize yes
maxmemory 8gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
slowlog-log-slower-than 5000

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

  • Redis 版本
  • 内存大小
  • 是否做缓存 / 数据库
  • 单机还是集群

我可以直接给你一套可用配置文件

0