当前位置: 首页 > news >正文

Redis 6.2.6 生产环境单机配置详解redis.conf

文章目录

  • Redis 生产环境配置详解
  • 配置文件示例
  • 基础网络与进程管理
  • RDB 持久化配置
  • 复制(主从同步)设置
  • 内存管理
  • AOF 持久化
  • 性能优化设置
  • 限制与监控
  • 其他参数
  • 完整配置
  • 总结


Redis 生产环境配置详解

在实际生产环境中,为了保障 Redis 的稳定性和高性能,我们往往需要对默认配置进行一系列优化。本篇博文将以一份经过优化的 Redis 配置文件为例,从基础网络设置、持久化、复制、内存管理、AOF 持久化、性能调优以及监控限制等多个方面进行详细讲解。

下面给出的是一份示例配置文件,并附上详细注释说明:


配置文件示例

#####################
# Redis 配置优化文件
# 适用于生产环境
###################### 绑定地址,允许所有 IP 访问,生产环境建议改为内网 IP
bind 192.168.1.1# 保护模式,建议开启 (yes) 以增强安全性
protected-mode yes# 监听端口
port 6379# TCP 连接队列大小
tcp-backlog 511# 连接超时时间(0 代表不超时)
timeout 0# TCP 保活时间(秒),建议设大一些,避免连接被防火墙误断开
tcp-keepalive 300# 后台运行
daemonize yes# 进程 PID 文件路径
pidfile /data/redis/redis_6379.pid# 日志级别 (debug | verbose | notice | warning)
loglevel notice# 日志文件路径(空值表示输出到标准输出)
logfile "/data/app/redis/logs/redis-server.log"# 数据库数量(默认16个,视业务需求调整)
databases 16# 显示 Redis 启动 Logo(关闭可减少日志干扰)
always-show-logo no

基础网络与进程管理

  • bind 与 protected-mode
    配置文件中指定了 bind 192.168.1.1,仅允许该 IP 访问 Redis 服务。对于生产环境,建议使用内网 IP 限制访问范围。同时开启 protected-mode(保护模式),可以防止未经授权的访问。

  • 端口与连接设置
    使用 port 6379 设定 Redis 监听端口,tcp-backlog 则设定了连接队列的长度。timeout 0 表示不自动断开空闲连接,而 tcp-keepalive 300 保持长连接的活性,避免中间设备(如防火墙)因空闲超时断开连接。

  • 后台运行与日志记录
    通过 daemonize yes 使 Redis 后台运行,同时定义了 PID 文件路径(pidfile)以及日志文件路径和日志级别。这些设置有助于管理进程和问题排查。


RDB 持久化配置

Redis 提供 RDB 持久化方式,可以定时保存内存数据到磁盘。配置文件中针对 RDB 做了如下优化:

#####################
# RDB 持久化
#####################
# RDB 失败时阻止写入,避免数据损坏
stop-writes-on-bgsave-error yes
# 启用 RDB 数据压缩
rdbcompression yes
# 启用 RDB 数据校验
rdbchecksum yes
# RDB 文件名
dbfilename dump.rdb
# 关闭 RDB 删除同步文件,防止误删除
rdb-del-sync-files no
# RDB 文件存储目录,建议设为 SSD 盘
dir /data/app/redis/data/
  • 数据完整性保护
    使用 stop-writes-on-bgsave-error yes,一旦 RDB 持久化出现错误,则停止写入操作,防止数据不一致。

  • 数据压缩和校验
    开启 rdbcompressionrdbchecksum 可有效减小 RDB 文件体积,并通过校验保证数据完整性。

  • 文件存储目录
    将 RDB 文件存储在 /data/app/redis/data/,建议部署在 SSD 上以获得更高的 I/O 性能。


复制(主从同步)设置

在高可用架构中,主从复制是常用手段。配置文件中针对复制功能作了如下设置:

#####################
# 复制(主从同步)
#####################
# 允许副本在断开主库时仍然提供只读服务
replica-serve-stale-data yes 
# 副本节点只读模式
replica-read-only yes
# 关闭无磁盘同步(默认使用磁盘同步)
repl-diskless-sync no
# 无磁盘同步的延迟
repl-diskless-sync-delay 5 
# 关闭无磁盘加载
repl-diskless-load disabled
# 保持默认 TCP nodelay 配置
repl-disable-tcp-nodelay no
# 副本优先级(越小越容易成为主库)
replica-priority 100 
  • 副本服务可用性
    replica-serve-stale-data yes 允许当副本与主库断开时继续提供只读服务,保证业务不中断。

  • 同步方式
    默认采用磁盘同步,通过调整 repl-diskless-sync-delay 来控制延迟,保持数据传输的稳定性。

  • 选主策略
    配置 replica-priority,数值越低的副本在主库故障时更容易被选举为新的主库。


内存管理

内存管理是 Redis 性能的核心部分,配置文件中提供了灵活的内存管理策略:

#####################
# 内存管理
#####################
# 默认不限制内存,可根据业务需求调整
maxmemory 0
# 不驱逐数据,可改为 allkeys-lru
maxmemory-policy noeviction
# 关闭惰性删除,避免额外 CPU 开销
lazyfree-lazy-eviction no 
# 关闭惰性过期
lazyfree-lazy-expire no 
# 关闭惰性删除
lazyfree-lazy-server-del no 
# 关闭副本惰性清理
replica-lazy-flush no
# 关闭 OOM 调整
oom-score-adj no 
# 仅在 OOM 保护时启用
oom-score-adj-values 0 200 800
  • 内存限制与策略
    maxmemory 0 表示默认无限制内存,适用于内存资源充足的环境;同时设置 maxmemory-policy noeviction,表示在内存达到上限时不驱逐数据。实际生产中,可以根据业务需求选用如 allkeys-lru 等驱逐策略。

  • 惰性删除
    关闭各种惰性删除功能(lazyfree-* 配置)可以减少 CPU 额外开销,不过可能会使删除操作较为同步执行,需根据业务场景权衡。


AOF 持久化

AOF(Append Only File)是 Redis 的另一种持久化方案,能提供更高的数据安全性。配置文件中对 AOF 进行如下设置:

#####################
# AOF 持久化
#####################
# 启用 AOF 持久化
appendonly yes 
# AOF 文件名
appendfilename "appendonly.aof" 
# 每秒同步一次,性能和安全的折中方案
appendfsync everysec
# 重写时是否关闭同步
no-appendfsync-on-rewrite no
# 触发 AOF 重写的比例
auto-aof-rewrite-percentage 100 
# 触发 AOF 重写的最小大小
auto-aof-rewrite-min-size 64mb
# 允许加载截断的 AOF
aof-load-truncated yes
# AOF 兼容 RDB 头部,减少重启时间
aof-use-rdb-preamble yes 
  • 数据安全与性能
    开启 appendonly yes 并使用 appendfsync everysec,在数据安全和性能之间取得平衡;每秒同步一次 AOF 文件可以大幅降低数据丢失风险。

  • 自动重写
    配置 auto-aof-rewrite-percentageauto-aof-rewrite-min-size,确保 AOF 文件不会无限制增大,同时利用增量重写减少重写期间的性能损耗。

  • 兼容性与恢复
    启用 aof-use-rdb-preamble 可以在重启时利用 RDB 头部数据加快加载速度,提升恢复效率。


性能优化设置

为了在高并发环境中获得更好的响应速度,Redis 在配置文件中还做了一系列性能调优:

#####################
# 性能优化
#####################
# 调高 Hz 频率,提高响应速度
hz 50
# 动态调整 Hz
dynamic-hz yes 
# AOF 重写时增量同步
aof-rewrite-incremental-fsync yes
# RDB 保存时增量同步
rdb-save-incremental-fsync yes 
# 启用 jemalloc 线程优化内存管理
jemalloc-bg-thread yes
  • Hz 频率
    默认的事件处理频率(hz)被调高到 50 次/秒,并启用动态调整,确保在负载波动时依然能够快速响应客户端请求。

  • 增量同步
    针对 AOF 重写和 RDB 保存启用增量同步,能有效减少磁盘 I/O 的压力,提高整体性能。

  • 内存分配优化
    启用 jemalloc 的后台线程(jemalloc-bg-thread yes)进一步优化内存分配和释放,适用于高并发场景。


限制与监控

为了及时发现问题并防止意外情况发生,Redis 提供了一系列监控和限制设置:

#####################
# 限制与监控
#####################
# 慢查询阈值(微秒)
slowlog-log-slower-than 10000
# 慢查询日志最大条数
slowlog-max-len 128 
# 关闭延迟监控
latency-monitor-threshold 0 
# 关闭 key 事件通知
notify-keyspace-events "" 
# 普通客户端无限制
client-output-buffer-limit normal 0 0 0
# 副本节点限制
client-output-buffer-limit replica 256mb 64mb 60
# PubSub 限制
client-output-buffer-limit pubsub 32mb 8mb 60
  • 慢查询日志
    通过设置 slowlog-log-slower-than 10000(单位为微秒)来记录执行时间超过 10 毫秒的命令,有助于定位性能瓶颈。

  • 客户端输出缓冲区
    分别对普通客户端、复制节点和 PubSub 模块设定了缓冲区大小限制,防止异常情况(如客户端阻塞)导致内存暴涨。


其他参数

最后,配置文件中还定义了一些额外参数,例如 RDB 保存条件和 TCP 相关参数,以进一步细化 Redis 的行为:

#####################
# 其他参数
#####################
# RDB 触发条件
save 900 1 300 10 60 10000 
# TCP 连接队列大小
tcp-backlog 511
# TCP 保活时间(秒)
tcp-keepalive 300

这些参数能根据具体业务场景对数据保存频率、网络连接队列等进行微调,从而达到性能和可靠性之间的平衡。


完整配置

#########################################
# Redis 配置优化文件
# 适用于生产环境
########################################## 绑定地址,允许所有 IP 访问,生产环境建议改为内网 IP
bind 192.168.1.1# 保护模式,建议开启 (yes) 以增强安全性
protected-mode yes# 监听端口
port 6379# TCP 连接队列大小
tcp-backlog 511# 连接超时时间(0 代表不超时)
timeout 0# TCP 保活时间(秒),建议设大一些,避免连接被防火墙误断开
tcp-keepalive 300# 后台运行
daemonize yes# 进程 PID 文件路径
pidfile /data/app/redis/redis_6379.pid# 日志级别 (debug | verbose | notice | warning)
loglevel notice# 日志文件路径(空值表示输出到标准输出)
logfile "/data/redis/logs/redis-server.log"# 数据库数量(默认16个,视业务需求调整)
databases 16# 显示 Redis 启动 Logo(关闭可减少日志干扰)
always-show-logo no#########################################
# RDB 持久化
#########################################
# RDB 失败时阻止写入,避免数据损坏
stop-writes-on-bgsave-error yes
# 启用 RDB 数据压缩
rdbcompression yes
# 启用 RDB 数据校验
rdbchecksum yes
# RDB 文件名
dbfilename dump.rdb
# 关闭 RDB 删除同步文件,防止误删除
rdb-del-sync-files no
# RDB 文件存储目录,建议设为 SSD 盘
dir /data/app/redis/data/#########################################
# 复制(主从同步)
#########################################
# 允许副本在断开主库时仍然提供只读服务
replica-serve-stale-data yes 
# 副本节点只读模式
replica-read-only yes
# 关闭无磁盘同步(默认使用磁盘同步)
repl-diskless-sync no
# 无磁盘同步的延迟
repl-diskless-sync-delay 5 
# 关闭无磁盘加载
repl-diskless-load disabled
# 保持默认 TCP nodelay 配置
repl-disable-tcp-nodelay no
# 副本优先级(越小越容易成为主库)
replica-priority 100 #########################################
# 内存管理
#########################################
# 默认不限制内存,可根据业务需求调整
maxmemory 0
# 不驱逐数据,可改为 allkeys-lru
maxmemory-policy noeviction
# 关闭惰性删除,避免额外 CPU 开销
lazyfree-lazy-eviction no 
# 关闭惰性过期
lazyfree-lazy-expire no 
# 关闭惰性删除
lazyfree-lazy-server-del no # 关闭副本惰性清理
replica-lazy-flush no# 关闭 OOM 调整
oom-score-adj no 
# 仅在 OOM 保护时启用
oom-score-adj-values 0 200 800#########################################
# AOF 持久化
#########################################
# 启用 AOF 持久化
appendonly yes 
# AOF 文件名
appendfilename "appendonly.aof" 
# 每秒同步一次,性能和安全的折中方案
appendfsync everysec
# 重写时是否关闭同步
no-appendfsync-on-rewrite no
# 触发 AOF 重写的比例
auto-aof-rewrite-percentage 100 
# 触发 AOF 重写的最小大小
auto-aof-rewrite-min-size 64mb
# 允许加载截断的 AOF
aof-load-truncated yes# AOF 兼容 RDB 头部,减少重启时间
aof-use-rdb-preamble yes 
#########################################
# 性能优化
#########################################
# 调高 Hz 频率,提高响应速度
hz 50
# 动态调整 Hz
dynamic-hz yes 
# AOF 重写时增量同步
aof-rewrite-incremental-fsync yes
# RDB 保存时增量同步
rdb-save-incremental-fsync yes # 启用 jemalloc 线程优化内存管理
jemalloc-bg-thread yes#########################################
# 限制与监控
#########################################
# 慢查询阈值(微秒)
slowlog-log-slower-than 10000
# 慢查询日志最大条数
slowlog-max-len 128 
# 关闭延迟监控
latency-monitor-threshold 0 
# 关闭 key 事件通知
notify-keyspace-events "" 
# 普通客户端无限制
client-output-buffer-limit normal 0 0 0
# 副本节点限制
client-output-buffer-limit replica 256mb 64mb 60
# PubSub 限制
client-output-buffer-limit pubsub 32mb 8mb 60#########################################
# 其他参数
#########################################
# RDB 触发条件
save 900 1 300 10 60 10000 
# TCP 连接队列大小
tcp-backlog 511
# TCP 保活时间(秒)
tcp-keepalive 300

总结

本篇博文详细解析了一份针对生产环境优化后的 Redis 配置文件。通过合理设置网络参数、持久化策略、复制机制、内存管理和性能调优,Redis 能够在高并发和大数据量场景下保持稳定高效运行。

实际部署时,应根据自身的硬件条件和业务特点对各项参数进行适当调整。对于环境安全、数据可靠性和性能优化等方面,建议参考官方文档和社区最佳实践,不断完善和调优配置。

希望这篇解析能帮助你更好地理解 Redis 配置文件的各项参数,并在生产环境中构建一个更加稳定高效的 Redis 服务体系!


http://www.mrgr.cn/news/96707.html

相关文章:

  • 深入解析拓扑排序:算法与实现细节
  • 【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
  • nodejs:midi-writer-js 将基金净值数据转换为 midi 文件
  • 如何本地部署RWKV-Runner尝鲜CPU版
  • 动态规划入门:从记忆化搜索到递推
  • TypeError: __init__() got an unexpected keyword argument ‘device_type‘
  • 深度学习--softmax回归
  • 高效内存位操作:如何用C++实现数据块交换的性能飞跃?
  • Time spent invoking a CUDA kernel
  • 蓝桥杯准备(前缀和差分)
  • Android 中集成 Google 应用内评分
  • 洛谷题单2-P1424 小鱼的航程(改进版)-python-流程图重构
  • thinkcmf搭建
  • 游戏引擎学习第198天
  • 大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG
  • 配置防火墙和SELinux(1)
  • 【Yolov8部署】 VS2019 + opencv + onnxruntime 环境下部署目标检测模型
  • mysql 八股
  • C语言常用的字符串函数
  • 06-02-自考数据结构(20331)- 查找技术-动态查找知识点