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.mzph.cn/web/74222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot实战:Excel文件上传、数据验证与存储全流程解析

一、需求场景与技术选型 在企业管理、数据中台等系统中,Excel文件处理是常见需求。本文将基于SpringBoot实现以下核心功能: 支持.xls/.xlsx文件上传数据完整性验证(非空、格式等)业务数据验证(关联数据库校验&#x…

使用Java爬虫按关键字搜索淘宝商品?

在电商领域,通过关键字搜索商品是获取商品信息的常见需求。Java爬虫技术可以帮助我们自动化地获取这些信息,提高工作效率。本文将详细介绍如何使用Java爬虫按关键字搜索淘宝商品,并提供完整的代码示例。 一、准备工作 1. 注册淘宝开放平台账…

【Git】5 个分区的切换方式及示例

目录 1. **工作区(Working Directory)**2. **缓存区(Stage/Index)**3. **本地仓库(Local Repository)**4. **远程仓库(Remote Repository)**5. **贮藏区(Stash&#xff0…

【计算机视觉】YOLO语义分割

一、语义分割简介 1. 定义 语义分割(Semantic Segmentation)是计算机视觉中的一项任务,其目标是对图像中的每一个像素赋予一个类别标签。与目标检测只给出目标的边界框不同,语义分割能够在像素级别上区分不同类别,从…

MATLAB之数据分析图系列:从二维到三维(直接套用)

MATLAB以其强大的矩阵运算和可视化功能,成为科研、工程领域的标配工具。本文提供从基础二维图形到复杂三维模型的即用代码块,涵盖数据标注、多图排版、动态演示等核心技巧 所有代码均经过MATLAB 2023a实测,替换数据即可生成专业级图表。” …

HTTP响应数据包全面解析:结构、原理与最佳实践

目录 HTTP响应概述 HTTP响应数据包结构 2.1 状态行 2.2 响应头 2.3 空行 2.4 响应体 HTTP状态码详解 3.1 1xx信息响应 3.2 2xx成功响应 3.3 3xx重定向 3.4 4xx客户端错误 3.5 5xx服务器错误 常见HTTP响应头字段 响应体内容类型 缓存控制机制 实际HTTP响应示例分…

H.264编码解析与C++实现详解

一、H.264编码核心概念 1.1 分层编码结构 H.264采用分层设计,包含视频编码层(VCL)和网络抽象层(NAL)。VCL处理核心编码任务,NAL负责封装网络传输数据。 1.2 NALU单元结构 // NAL单元头部结构示例 struc…

快速入手-基于Django-rest-framework的自身组件权限认证(九)

1、在对应的视图函数里增加认证(局部起作用,不全局生效) 导入类: from rest_framework.authentication import ( BasicAuthentication, SessionAuthentication, ) from rest_framework.permissions import IsAuthentica…

受控组件和非受控组件的区别

在 React 中,​受控组件(Controlled Components)​ 和 ​非受控组件(Uncontrolled Components)​ 是处理表单元素的两种不同方式,它们的核心区别在于 ​数据管理的方式 和 ​与 React 的交互模式。 受控组件…

迈向云原生:理想汽车 OLAP 引擎变革之路

在如今数据驱动的时代,高效的分析引擎对企业至关重要。理想汽车作为智能电动汽车的领军企业,面临着海量数据分析的挑战。本文将展开介绍理想汽车 OLAP 引擎从存算一体向云原生架构演进的变革历程,以及在此过程中面临的挑战,以及是…

ZLMediaKit 源码分析——[3] ZLToolKit 中EventPoller之网络事件处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三…

【分布式】分布式限流方案解析

文章目录 固定窗口限流方案​实现方式​优点​缺点​ 滑动窗口限流方案​实现方式​优点​缺点​ 令牌桶限流方案​实现方式​优点​缺点​ 漏斗限流方案​实现方式​优点​缺点​ 在分布式系统蓬勃发展的当下,系统面临的流量挑战日益复杂。为确保系统在高并发场景下…

WPS JS宏编程教程(从基础到进阶)-- 第三部分:JS宏编程语言开发基础

第三部分:JS宏编程语言开发基础 @[TOC](第三部分:JS宏编程语言开发基础)**第三部分:JS宏编程语言开发基础**1. 变量与数据类型**变量声明:三种方式****示例代码****数据类型判断****实战:动态处理单元格类型**2. 运算符全解析**算术运算符****易错点:字符串拼接 vs 数值相…

Python - 爬虫-网页抓取数据-库urllib

urllib库是Python内置的HTTP请求库。无需额外安装,可以直接使用。urllib库包含以下四个模块。 urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件。 1、reque…

C++进阶知识复习 1~15

C 进阶总复习 (1~15) 目的1. 介绍下程序从编写到可执行的整个过程2. C中的auto和decltype的区别3. 介绍下多态的实现原理4. C中的new[] 和delete[] 为什么一定要配对使用?5. C中malloc申请的内存 可以使用delete释放嘛6. 什么情况下会出现内存…

输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技

在现代社会,随着航空业的快速发展,低空飞行活动日益频繁。为了确保飞行安全,避免飞机与高压电线等障碍物发生碰撞,输电线路航空标志球应运而生。这种装置被广泛应用于高压输电线路上,尤其是超高压和跨江输电线&#xf…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件详解

Debian/Ubuntu的networking的/etc/network/interfaces配置文件详解 Debian/Ubuntu 的 /etc/network/interfaces 配置文件详解 在 Debian/Ubuntu 系统中,/etc/network/interfaces 是传统网络接口配置文件,用于定义网络接口的静态/动态配置。以下是逐项解…

OpenCV 图形API(或称G-API)(1)

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 引言 OpenCV 图形API(或称G-API)是一个新的OpenCV模块,旨在使常规图像处理更快且更便携。通过引入一种新的基于图的执行…

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路2. 代码实现 题目链接:3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路 这一题大的思路上不难想到就是一个动态规划的思路。我们分别…

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…