Redis 配置详解(基于 6.0.10 版本)
Redis 的配置文件(redis.conf
)是控制 Redis 行为的核心,包含了从基础运行参数到高级特性(如持久化、集群、安全)的所有设置。本文基于 6.0.10 版本,按模块解析关键配置项的作用、默认值及实际应用建议。
INCLUDES 模块:配置文件引入
1 2
| # include /path/to/local.conf # include /path/to/other.conf
|
- 作用:通过
include
指令引入其他配置文件,便于拆分配置(如将环境特定配置与通用配置分离)。
- 使用场景:多环境部署(开发 / 测试 / 生产)时,可共享基础配置,仅在环境专属文件中修改差异项。
GENERAL 模块:基础运行参数
核心配置
配置项 |
作用 |
默认值 |
建议设置 |
daemonize |
是否以守护进程(后台)模式运行。 |
no |
生产环境设为 yes |
pidfile |
进程 ID 文件路径(守护模式下必填)。 |
redis_6379.pid |
按端口区分(如 redis_6380.pid ) |
port |
监听端口。 |
6379 |
多实例需修改(如 6380、6381) |
loglevel |
日志级别(debug /verbose /notice /warning )。 |
notice |
生产环境用 warning (减少日志量) |
logfile |
日志文件路径(空表示输出到控制台)。 |
"" |
设为具体路径(如 ./logs/redis.log ) |
databases |
数据库数量(通过 select <dbid> 切换)。 |
16 |
无需修改(默认足够) |
NETWORK 模块:网络与连接设置
核心配置
配置项 |
作用 |
默认值 |
建议设置 |
bind |
绑定的 IP 地址(限制客户端连接来源)。 |
127.0.0.1 ::1 |
生产环境设为 0.0.0.0 (允许所有 IP,结合防火墙控制) |
protected-mode |
保护模式(仅允许本地连接,需密码或绑定 IP 才能远程访问)。 |
yes |
开启(增强安全性) |
timeout |
客户端连接超时时间(秒,0 表示不超时)。 |
0 |
设为 300 (5 分钟,释放闲置连接) |
tcp-keepalive |
TCP 保活检测间隔(秒)。 |
300 |
保持默认(避免连接被防火墙断开) |
SNAPSHOTTING 模块:RDB 持久化配置
RDB 通过快照保存数据,核心配置控制快照触发条件和存储参数:
配置项 |
作用 |
默认值 |
建议设置 |
save <seconds> <changes> |
触发快照的条件(多少秒内发生多少次修改)。 |
save 900 1 save 300 10 save 60 10000 |
高写入场景可放宽条件(如 save 3600 100 ) |
stop-writes-on-bgsave-error |
快照失败时是否停止写操作(避免数据不一致)。 |
yes |
保持默认(生产环境重视一致性) |
rdbcompression |
是否压缩 RDB 文件(消耗 CPU,节省空间)。 |
yes |
开启(空间收益通常大于 CPU 损耗) |
dbfilename |
RDB 文件名。 |
dump.rdb |
按端口区分(如 dump_6380.rdb ) |
dir |
数据文件(RDB/AOF)存储目录。 |
./ |
设为独立目录(如 /data/redis/ ) |
REPLICATION 模块:主从复制配置
控制主从同步行为,确保数据备份和读写分离:
配置项 |
作用 |
默认值 |
建议设置 |
replicaof <masterip> <masterport> |
指定主节点 IP 和端口(从节点配置)。 |
未设置 |
从节点需配置(如 replicaof 127.0.0.1 6379 ) |
masterauth <password> |
主节点密码(若主节点启用 requirepass )。 |
未设置 |
与主节点 requirepass 一致 |
replica-read-only |
从节点是否只读。 |
yes |
保持默认(避免从节点写入导致数据不一致) |
repl-backlog-size |
复制积压缓冲区大小(断线重连时用于增量同步)。 |
1mb |
高写入场景设为 10mb 以上 |
replica-priority |
从节点优先级(选举新主节点时,值越小优先级越高)。 |
100 |
核心从节点设为较低值(如 50) |
MEMORY MANAGEMENT 模块:内存管理与淘汰策略
控制内存上限和数据淘汰规则,避免 OOM(内存溢出):
配置项 |
作用 |
默认值 |
建议设置 |
maxmemory <bytes> |
最大可用内存(0 表示不限制)。 |
0 |
设为物理内存的 50%-70%(如 4gb ) |
maxmemory-policy |
内存满时的淘汰策略(如 allkeys-lru 、volatile-lru 等)。 |
noeviction |
缓存场景用 allkeys-lru (淘汰最少使用的键) |
maxmemory-samples |
LRU/LFU 算法的采样数量(影响精度和性能)。 |
5 |
保持默认(平衡精度和性能) |
APPEND ONLY MODE 模块:AOF 持久化配置
AOF 以日志形式记录写操作,比 RDB 更安全(丢失数据更少):
配置项 |
作用 |
默认值 |
建议设置 |
appendonly |
是否开启 AOF 持久化。 |
no |
生产环境设为 yes (优先保证数据安全) |
appendfilename |
AOF 文件名。 |
appendonly.aof |
按端口区分(如 appendonly_6380.aof ) |
appendfsync |
AOF 同步策略(always /everysec /no )。 |
everysec |
保持默认(每秒同步,平衡安全和性能) |
auto-aof-rewrite-percentage |
AOF 重写触发的增长率(当前 size / 上次重写 size)。 |
100 |
可设为 150 (减少重写频率) |
auto-aof-rewrite-min-size |
AOF 重写的最小文件大小。 |
64mb |
大内存实例设为 1gb 以上 |
SECURITY 模块:安全设置
增强 Redis 安全性,防止未授权访问和误操作:
配置项 |
作用 |
默认值 |
建议设置 |
requirepass <password> |
客户端连接密码。 |
未设置 |
生产环境必须设置(如 requirepass Redis@123 ) |
rename-command <cmd> <newcmd> |
重命名危险命令(如 CONFIG 、FLUSHALL )。 |
未设置 |
重命名或禁用(如 rename-command FLUSHALL "" ) |
SLOW LOG 模块:慢查询日志
记录执行时间过长的命令,用于性能排查:
配置项 |
作用 |
默认值 |
建议设置 |
slowlog-log-slower-than |
慢查询阈值(微秒,超过此值的命令被记录)。 |
10000 (10ms) |
高并发场景设为 5000 (5ms) |
slowlog-max-len |
慢查询日志最大条数(超过后淘汰最旧记录)。 |
128 |
设为 1000 (保留更多历史) |
ADVANCED CONFIG 模块:高级性能优化
配置项 |
作用 |
默认值 |
建议设置 |
hz |
定时任务执行频率(每秒次数)。 |
10 |
高配置服务器可设为 20 (提升响应速度) |
activerehashing |
是否自动渐进式重哈希(优化哈希表内存使用)。 |
yes |
保持默认(减少内存碎片) |
client-output-buffer-limit |
客户端输出缓冲区限制(防止大响应阻塞服务器)。 |
主节点无限制,从节点 / 订阅客户端有限制 |
保持默认(避免恶意客户端攻击) |
生产环境配置最佳实践
- 基础安全:
- 启用密码(
requirepass
),重命名 / 禁用危险命令(FLUSHALL
、CONFIG
)。
- 限制
bind
地址(结合防火墙),避免公网直接暴露。
- 持久化策略:
- 开启 AOF(
appendonly yes
),同步策略用 everysec
。
- 保留 RDB 作为全量备份(默认配置即可)。
- 内存管理:
- 设
maxmemory
为物理内存的 50%-70%,避免系统 OOM。
- 缓存场景用
allkeys-lru
淘汰策略,核心数据用 noeviction
并监控内存增长。
- 高可用:
- 主从复制至少 1 主 2 从,从节点优先级区分(确保故障时快速切换)。
- 开启哨兵模式(
sentinel.conf
)实现自动故障转移。
- 性能优化:
- 禁用 THP(透明大页),避免内存分配延迟。
- 高并发场景调整
hz=20
,开启 I/O 线程(io-threads 4
,需 Redis 6+)。
v1.3.10