Redis 5.0终极配置指南

发布于:2025-07-25 ⋅ 阅读:(21) ⋅ 点赞:(0)

Redis 5.0 的配置文件redis.conf 是Redis服务器的核心配置,包含了丰富的配置选项,以下是Redis 5.0 配置文件的主要部分以及关键参数详细解析:

基本配置

守护进程模式

daemonize yes
  • 控制Redis是否以守护进程方式运行
  • yes 表示后台运行,no表示前台运行

监听端口

port 6379
  • Redis 默认监听端口为6379
  • 可以修改为其他端口以增强安全性

绑定IP

bind 127.0.0.1
  • 指定Redis监听的IP地址
  • 默认只允许本地访问
  • 如需远程访问可设置为 0.0.0.0 或者指定IP

保护模式

protected-mode yes
  • 安全保护机制
  • 当未设置密码且未绑定IP时,只允许本地访问

持久化配置

RDB 快照

save 900 1
save 300 10
save 60 10000
  • 指定在多长时间内多少次更新操作就将数据同步到数据文件

  • 默认配置表示

    • 900 s 内有1个更改
    • 300 s 内有10个更改
    • 60 s 内有10000个更改

RDB 文件配置

dbfilename dump.rdb
dir ./
  • 指定RDB文件名称
  • dir 指定RDB 和AOF文件的存储目录

AOF 持久化

appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
  • appendonly 是否开启AOF 持久化

  • appendfilename AOF 文件名

  • appendfsync 同步策略

    • always:每次写入都同步
    • everysec:每秒同步(默认)
    • no :由操作系统决定

内存管理

最大内存限制

maxmemory 0
maxmemory-policy noeviction
  • maxmemory:设置Redis最大内存限制,0表示无限制

  • maxmemory-policy 内存达到上限时的处理策略

    • volatile-lru:从设置了过期时间的键中使用 LRU 算法淘汰
    • allkeys-lru:从所有键中使用 LRU 算法淘汰
    • noeviction:不淘汰,新写入操作会报错(默认)

安全配置

密码认证

requirepass ""
  • 设置Redis 连接密码
  • 默认无密码,建议设置强密码

命令重命名

rename-command CONFIG ""
  • 可以重命名或者禁用危险命令
  • 实力表示禁用Config 命令

高级配置

复制(主从)

replicaof <masterip> <masterport>
masterauth <master-password>
  • replicaof 配置从服务器复制的主服务器
  • masterauth 设置主服务器密码

集群

cluster-enabled yes
cluster-config-file nodes-6379.conf
  • cluster-enabled 是否启用集群模式
  • cluster-config-file 集群配置文件

性能调优

TCP 连接

tcp-backlog 511
tcp-keepalive 300
  • tcp-backlog 设置TCP连接队列长度
  • tcp-keepalive 设置TCP连接保活时间

客户端连接

maxclients 10000
  • 设置同时连接的最大客户端数量

日志配置

日志级别

loglevel notice
logfile ""
  • loglevel 日志级别(debug/verbose/notice/warning)
  • logfile 指定日志文件路径,空表示标准输出

性能优化的标准

核心性能优化项

  1. 内存优化
  • 使用ziplist编码压缩小数据(调整hash-max-ziplist-entrieslist-max-ziplist-size等)
  • 启用jemalloc内存分配器(默认已启用)
  • 设置合理的maxmemory并配置淘汰策略(如volatile-lruallkeys-lru
  • 避免大Key(单Key超过10KB需拆分)
  1. 网络与连接
  • 限制最大连接数(maxclients,建议为系统最大文件描述符数的70%)
  • 启用TCP Keepalive(tcp-keepalive 60
  • 使用连接池(客户端配置,如Jedis的maxTotal
  1. 持久化调优
  • RDB:调整save阈值(如save 900 1)或禁用自动保存

  • AOF

    • 策略选择:appendfsync everysec(平衡性能与安全)
    • 开启aof-rewrite-incremental-fsync减少重写时磁盘压力
  • 混合持久化:aof-use-rdb-preamble yes(Redis 4.0+)

  1. 数据结构选择
  • 高频写入场景使用Hash替代多个String
  • 有序集合需控制zset-max-ziplist-entries

进阶配置

  1. 内核参数调优
  • 禁用透明大页(THP):echo never > /sys/kernel/mm/transparent_hugepage/enabled
  • 提高somaxconn(如65535)避免连接丢弃
  • 优化vm.overcommit_memory=1(避免OOM Killer)
  1. 集群优化
  • 分片大小控制在10GB以内
  • 使用CRC16以外的哈希算法(如xxHash)需自定义
  • 避免跨机房部署(延迟敏感)
  1. 客户端优化
  • Pipeline批量操作(减少RTT)
  • Lua脚本避免长耗时操作(SCRIPT KILL保护)

监控与维护

  1. 关键指标监控
  • 内存:used_memorymem_fragmentation_ratio(>1.5需告警)
  • 延迟:redis-cli --latency(超过5ms需排查)
  • 命中率:keyspace_hits/(keyspace_hits+keyspace_misses)(低于90%需优化)
  1. 运维命令
  • 慢查询分析:SLOWLOG GET(配置slowlog-log-slower-than 10ms
  • 内存分析:redis-cli --bigkeysMEMORY USAGE key
  • 连接统计:CLIENT LIST
  1. 定期维护
  • 主从节点错峰执行BGSAVE
  • 每月检查config set动态参数有效性

性能测试基准

  1. 基准测试工具:
redis-benchmark -t set,get -n 100000 -c 50 -P 10
  • 要求:单节点QPS ≥5万(普通服务器)
  1. 压测需覆盖:混合读写、不同数据大小(100B~10KB)

调优优先级矩阵

场景 首要优化项
内存不足 淘汰策略 + 数据结构压缩
高延迟 网络配置 + 内核参数
CPU饱和 Pipeline + 慢查询优化

网站公告

今日签到

点亮在社区的每一天
去签到