0%

redis配置

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-lruvolatile-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> 重命名危险命令(如 CONFIGFLUSHALL)。 未设置 重命名或禁用(如 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 客户端输出缓冲区限制(防止大响应阻塞服务器)。 主节点无限制,从节点 / 订阅客户端有限制 保持默认(避免恶意客户端攻击)

生产环境配置最佳实践

  1. 基础安全
    • 启用密码(requirepass),重命名 / 禁用危险命令(FLUSHALLCONFIG)。
    • 限制 bind 地址(结合防火墙),避免公网直接暴露。
  2. 持久化策略
    • 开启 AOF(appendonly yes),同步策略用 everysec
    • 保留 RDB 作为全量备份(默认配置即可)。
  3. 内存管理
    • maxmemory 为物理内存的 50%-70%,避免系统 OOM。
    • 缓存场景用 allkeys-lru 淘汰策略,核心数据用 noeviction 并监控内存增长。
  4. 高可用
    • 主从复制至少 1 主 2 从,从节点优先级区分(确保故障时快速切换)。
    • 开启哨兵模式(sentinel.conf)实现自动故障转移。
  5. 性能优化
    • 禁用 THP(透明大页),避免内存分配延迟。
    • 高并发场景调整 hz=20,开启 I/O 线程(io-threads 4,需 Redis 6+)。

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10