一、Redis 核心配置文件(redis.conf)关键参数
Redis 配置文件是优化的核心,先掌握必改 / 必配置的核心参数:
1. 基础运行配置
ini
# 后台运行(生产环境必须开启)
daemonize yes
# PID文件路径
pidfile /var/run/redis_6379.pid
# 监听端口
port 6379
# 监听地址(生产环境不要设为0.0.0.0,限制IP访问)
bind 127.0.0.1 192.168.1.100
# 日志级别(生产用notice,调试用verbose)
loglevel notice
# 日志文件路径
logfile "/var/log/redis/redis.log"
# 数据库数量(默认16个,生产一般用1-3个)
databases 16
2. 安全配置(生产环境必备)
ini
# 设置密码(强烈建议开启)
requirepass 你的强密码
# 禁止危险命令(防止误删/攻击)
rename-command CONFIG ""
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
# 客户端超时时间(空闲自动断开)
timeout 300
3. 客户端连接配置
ini
# 最大客户端连接数(生产根据服务器配置调整)
maxclients 10000
# TCP队列长度(高并发场景调大)
tcp-backlog 511
二、Redis 内存优化(最核心优化点)
Redis 是内存数据库,内存管理直接决定服务稳定性。
1. 最大内存配置
ini
# 限制Redis最大使用内存(不要超过物理内存的50%)
# 例:8G服务器 → maxmemory 4G
maxmemory 4GB
2. 内存淘汰策略(关键!)
当内存达到上限时,Redis 会按照策略删除数据,生产环境必须配置:
ini
# 推荐策略:仅淘汰设置了过期时间的key(缓存场景最优)
maxmemory-policy allkeys-lru
# 其他策略说明:
# volatile-lru → 只淘汰过期key
# allkeys-lru → 淘汰所有key(最常用)
# volatile-random → 随机淘汰过期key
# noeviction → 不淘汰,直接报错(默认,生产禁用)
3. 内存碎片优化
ini
# 开启内存碎片整理(Redis 4.0+)
activedefrag yes
# 触发整理阈值(碎片率>20%开始整理)
active-defrag-threshold-lower 20
三、Redis 持久化优化(数据安全 + 性能平衡)
Redis 提供RDB 快照 和AOF 日志 两种持久化方式,生产推荐混合持久化。
1. RDB 配置(快照,快,丢数据多)
ini
# 自动备份规则(满足任意条件触发)
save 900 1 # 900秒1次修改
save 300 10 # 300秒10次修改
save 60 10000 # 60秒10000次修改
# 备份失败停止写入
stop-writes-on-bgsave-error yes
# 压缩RDB文件
rdbcompression yes
2. AOF 配置(日志,安全,性能略低)
ini
# 开启AOF持久化
appendonly yes
# AOF文件名
appendfilename "appendonly.aof"
# 刷盘策略(生产推荐:everysec)
# always → 每次写入都刷盘(最安全,最慢)
# everysec → 每秒刷盘(平衡安全和性能)
# no → 操作系统自动刷盘(最快,最不安全)
appendfsync everysec
# AOF重写配置(自动缩小文件体积)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
3. 混合持久化(Redis 4.0+,最优方案)
ini
# 开启RDB+AOF混合持久化
aof-use-rdb-preamble yes
四、Redis 高性能优化(提升 QPS / 降低延迟)
1. 网络优化
ini
# 关闭TCP_NODELAY(降低网络延迟)
tcp-nodelay yes
# 开启SO_REUSEADDR(快速重启)
tcp-reuse-port yes
2. 线程 / IO 优化(Redis 6.0+)
ini
# 开启多线程IO(Redis 6.0+,提升读写性能)
io-threads-do-reads yes
# 线程数=CPU核心数(4核CPU设为4)
io-threads 4
3. 禁用无用功能
ini
# 关闭数据库通知(节省CPU)
notify-keyspace-events ""
# 关闭超时检测(无过期key时开启)
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
五、Redis 集群优化(分布式高可用)
1. 主从复制优化
ini
# 从节点只读(禁止写入)
slave-read-only yes
# 复制缓冲区大小(大集群调大)
repl-backlog-size 64mb
# 无磁盘复制(大内存服务器开启)
repl-diskless-sync yes
2. Redis Cluster 集群配置
ini
# 开启集群模式
cluster-enabled yes
# 集群节点配置文件
cluster-config-file nodes-6379.conf
# 节点超时时间
cluster-node-timeout 15000
# 允许 slots 覆盖(扩容用)
cluster-allow-replica-migration yes
六、生产环境最佳实践方案
1. 单机 Redis(缓存场景)
- 内存:物理内存的 50%
- 淘汰策略:
allkeys-lru - 持久化:
AOF+RDB混合,appendfsync everysec - 密码 + 禁用危险命令
2. 主从 Redis(高可用)
- 主节点:关闭持久化,提升性能
- 从节点:开启持久化,保证数据备份
- 搭配Sentinel 哨兵实现自动故障切换
3. Redis Cluster 集群(分布式)
- 至少 3 主 6 从 节点
- 节点内存:不超过 10GB / 节点
- 避免大 Key、热 Key
七、Redis 禁止 / 规避的坑
- 禁止存储大 Key:Value > 10KB 会导致网络阻塞、集群倾斜
- 禁止使用 KEYS 命令:会阻塞 Redis 主线程
- 禁止设置无过期时间的缓存:导致内存溢出
- 禁止单实例内存过大:超过 10GB 建议拆分集群
- 禁止公网直接暴露 Redis 端口:必须加密码 + 防火墙限制 IP
八、一键优化配置模板(生产可直接用)
ini
daemonize yes
bind 127.0.0.1
port 6379
requirepass Redis@123456
timeout 300
maxclients 10000
maxmemory 4GB
maxmemory-policy allkeys-lru
activedefrag yes
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
save 900 1
save 300 10
save 60 10000
io-threads 4
io-threads-do-reads yes
tcp-nodelay yes
rename-command CONFIG ""
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
总结
- 配置核心:安全(密码 + 禁用危险命令)+ 内存(限制 + 淘汰策略)+ 持久化(混合模式)
- 优化核心:内存管理、多线程 IO、避免大 Key / 热 Key
- 架构核心:单机做缓存,主从 + 哨兵做高可用,Cluster 做分布式扩容