Redis 8.0 配置文件详解
1. 网络配置
# redis.conf
bind 127.0.0.1 # 绑定的IP地址,默认只允许本地访问
protected-mode yes # 是否开启保护模式,开启后只允许bind指定的IP访问
port 6379 # Redis服务端口
tcp-backlog 511 # TCP连接队列长度
timeout 0 # 客户端空闲超时时间,0表示不关闭
tcp-keepalive 300 # TCP keepalive时间
2. 通用运行参数配置
# redis.conf
daemonize no # 是否以守护进程运行
supervised no # 是否使用upstart或systemd管理Redis进程
pidfile /var/run/redis_6379.pid # pid文件位置
loglevel notice # 日志级别:debug/verbose/notice/warning
logfile "" # 日志文件位置
databases 16 # 数据库数量
3. 持久化配置
3.1 RDB 快照配置
# redis.conf
save 900 1 # 900秒内有1个修改
save 300 10 # 300秒内有10个修改
save 60 10000 # 60秒内有10000个修改
stop-writes-on-bgsave-error yes # 当bgsave出错时停止写入
rdbcompression yes # 是否压缩RDB文件
rdbchecksum yes # 是否校验RDB文件
dbfilename dump.rdb # RDB文件名
dir ./ # RDB文件保存目录
3.2 AOF 持久化配置
# redis.conf
appendonly no # 是否开启AOF持久化
appendfilename "appendonly.aof" # AOF文件名
appendfsync everysec # AOF同步策略
no-appendfsync-on-rewrite no # 重写时是否同步
auto-aof-rewrite-percentage 100 # AOF重写触发条件
auto-aof-rewrite-min-size 64mb # AOF重写最小大小
4. 主从复制配置
# redis.conf
replica-serve-stale-data yes # 当从库与主库断开连接时,是否继续提供服务
replica-read-only yes # 从库是否只读
repl-diskless-sync no # 是否使用无磁盘复制
repl-diskless-sync-delay 5 # 无磁盘复制延迟时间
replica-priority 100 # 从库优先级
5. 安全配置
# redis.conf
requirepass foobared # 设置访问密码
rename-command CONFIG "" # 禁用命令
6. 内存管理
# redis.conf
maxmemory <bytes> # 最大内存限制
maxmemory-policy noeviction # 内存达到上限时的处理策略
maxmemory-samples 5 # 内存策略采样数
7. 集群配置
# redis.conf
cluster-enabled yes # 是否启用集群模式
cluster-config-file nodes-6379.conf # 集群配置文件
cluster-node-timeout 15000 # 集群节点超时时间
cluster-replica-validity-factor 10 # 从节点有效性因子
cluster-migration-barrier 1 # 迁移屏障
cluster-require-full-coverage yes # 是否需要完整覆盖
8. 监控配置
8.1 慢查询配置
# redis.conf
slowlog-log-slower-than 10000 # 慢查询阈值(微秒)
slowlog-max-len 128 # 慢查询日志长度
8.2 延迟监控配置
# redis.conf
latency-monitor-threshold 0 # 延迟监控阈值
8.3 事件通知配置
# redis.conf
notify-keyspace-events "" # 键空间通知配置
9. 高级配置
9.1 数据类型编码配置
# redis.conf
hash-max-ziplist-entries 512 # hash使用ziplist编码的最大条目数
hash-max-ziplist-value 64 # hash使用ziplist编码的最大值长度
list-max-ziplist-entries 512 # list使用ziplist编码的最大条目数
list-max-ziplist-value 64 # list使用ziplist编码的最大值长度
set-max-intset-entries 512 # set使用intset编码的最大条目数
zset-max-ziplist-entries 128 # zset使用ziplist编码的最大条目数
zset-max-ziplist-value 64 # zset使用ziplist编码的最大值长度
9.2 过期策略配置
# redis.conf
# 过期键的删除策略
maxmemory-policy volatile-lru # 内存达到上限时的处理策略
# 可选值:
# noeviction: 不删除,返回错误
# allkeys-lru: 删除最近最少使用的键
# volatile-lru: 删除设置了过期时间的键中最近最少使用的
# allkeys-random: 随机删除任意键
# volatile-random: 随机删除设置了过期时间的键
# volatile-ttl: 删除即将过期的键
# volatile-lfu: 删除设置了过期时间的键中访问频率最少的
# allkeys-lfu: 删除访问频率最少的键
# 过期键的采样数量
maxmemory-samples 5 # 每次采样时检查的键数量
# 过期键的检查频率
hz 10 # 每秒执行的后台任务频率
9.3 客户端配置
# redis.conf
# 客户端连接限制
maxclients 10000 # 最大客户端连接数
client-output-buffer-limit normal 0 0 0 # 普通客户端输出缓冲区限制
client-output-buffer-limit slave 256mb 64mb 60 # 从节点输出缓冲区限制
client-output-buffer-limit pubsub 32mb 8mb 60 # 发布订阅客户端输出缓冲区限制
# 客户端超时设置
timeout 0 # 客户端空闲超时时间(秒)
tcp-keepalive 300 # TCP keepalive时间(秒)
9.4 性能调优配置
# redis.conf
# 内存优化
activedefrag yes # 是否启用主动碎片整理
active-defrag-ignore-bytes 100mb # 碎片整理的最小碎片大小
active-defrag-threshold-lower 10 # 碎片整理的最小碎片百分比
active-defrag-threshold-upper 100 # 碎片整理的最大碎片百分比
active-defrag-cycle-min 25 # 碎片整理的最小CPU使用率
active-defrag-cycle-max 75 # 碎片整理的最大CPU使用率
# 后台任务配置
lazyfree-lazy-eviction no # 是否异步删除过期键
lazyfree-lazy-expire no # 是否异步删除过期键
lazyfree-lazy-server-del no # 是否异步删除服务器命令删除的键
replica-lazy-flush no # 是否异步清空从节点数据
10. 配置说明
网络配置:控制 Redis 服务器的网络连接参数,包括绑定 IP、端口、连接超时等。
通用配置:设置 Redis 的基本运行参数,如守护进程模式、日志级别等。
持久化配置:控制 RDB 和 AOF 持久化的相关参数,包括保存条件、压缩选项等。
主从复制配置:设置主从复制的相关参数,控制数据同步和故障转移行为。
安全配置:提供访问控制和命令重命名等安全特性。
内存管理:控制内存使用限制和内存达到上限时的处理策略。
集群配置:Redis Cluster 模式的相关参数设置。
监控配置:包括慢查询、延迟监控和事件通知等监控功能。
高级配置:包含数据类型编码、过期策略、客户端管理和性能调优等高级特性。
11. 最佳实践建议
- 生产环境建议开启
protected-mode并设置强密码 - 根据实际需求调整内存限制和持久化策略
- 合理配置主从复制参数以确保数据安全
- 根据业务特点调整数据类型编码参数
- 建议开启慢查询日志以便性能优化
- 集群环境需要特别注意网络和超时设置
- 根据业务特点选择合适的过期策略:
- 对于缓存场景,建议使用
volatile-lru或volatile-ttl - 对于持久化数据,建议使用
noeviction - 对于内存敏感场景,可以使用
allkeys-lru
- 对于缓存场景,建议使用
- 合理设置客户端缓冲区限制,防止内存溢出:
- 普通客户端通常不需要限制
- 从节点和发布订阅客户端需要适当限制
- 性能调优建议:
- 在内存碎片较多时启用主动碎片整理
- 根据服务器性能调整碎片整理参数
- 对于大键删除,建议启用异步删除
