论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
大数据
›
数据仓库与分析
›
Redis 6.2.6 生产情况单机配置详解redis.conf
Redis 6.2.6 生产情况单机配置详解redis.conf
农民
论坛元老
|
2025-4-2 17:37:52
|
显示全部楼层
|
阅读模式
楼主
主题
1581
|
帖子
1581
|
积分
4743
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
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 恒久化出现错误,则制止写入操纵,防止数据不划一。
数据压缩和校验
开启 rdbcompression 和 rdbchecksum 可有用减小 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-percentage 和 auto-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 服务体系!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
农民
论坛元老
这个人很懒什么都没写!
楼主热帖
数据库入门
肝了五万字把SQL数据库从基础到高级所 ...
java反射大白话
iOS WebRTC 点对点实时音视频流程介绍 ...
Java中set集合简介说明
【R语言数据科学】(十二):有趣的概 ...
每日算法之数组中的逆序对
CentOS 7.9 安装 rocketmq-4.9.2
消息队列常见的使用场景
flume基本安装与使用
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
云原生
移动端开发
快速回复
返回顶部
返回列表