🧠 1、简述

Redis 是一款基于内存的高性能键值数据库,为了防止数据丢失,Redis 提供了两种主要的持久化机制:RDB(快照)和 AOF(追加日志)。本文将从原理到配置,再到实际项目演示,全面讲解如何使用 Redis 持久化功能。

在这里插入图片描述


🚀 2、为什么 Redis 需要持久化?

虽然 Redis 是内存数据库,但生产环境中常常要求“重启不丢数据”或“数据可恢复”,这就需要使用 Redis 的持久化功能。

📌 持久化的作用:

  • 避免服务器崩溃后数据全部丢失

  • 支持数据定期备份

  • 支持主从复制的数据同步基础

📌两种持久化机制:

类型简介特点
RDB(快照)将内存数据以二进制快照形式定时保存占用小、恢复快、可能丢数据
AOF(追加日志)将每条写命令追加到日志中恢复完整、文件大、写入慢
混合模式RDB + AOF 混合兼顾性能与安全性(Redis 4.0+)

📁 3、RDB持久化配置详解

3.1 基础配置(redis.conf)

save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化stop-writes-on-bgsave-error yes  # 持久化失败停止写入
rdbcompression yes              # 启用压缩
rdbchecksum yes                 # 启用校验和
dbfilename dump.rdb             # RDB文件名
dir ./                          # 存储目录

3.2 实践样例:生产环境RDB配置

# 电商平台配置示例
save 3600 1      # 1小时备份一次
save 300 100     # 5分钟100次写入备份
save 60 100000   # 1分钟10万次写入备份rdbcompression yes
rdbchecksum yes
dbfilename ${REDIS_PORT}.rdb  # 多实例区分
dir /data/redis/rdb

3.3 手动触发命令

# 同步保存(阻塞主进程)
redis-cli save# 异步保存(后台执行)
redis-cli bgsave# 查看最后一次保存状态
redis-cli info persistence | grep last_save_time

📁 4、AOF持久化配置详解

4.1 基础配置

appendonly yes               # 启用AOF
appendfilename "appendonly.aof"  # 文件名
appendfsync everysec         # 同步策略# 重写控制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbaof-load-truncated yes       # 加载截断的AOF文件
aof-use-rdb-preamble yes     # 混合持久化(Redis 4.0+)

4.2 同步策略对比

配置值同步机制数据安全性性能影响
always每个命令同步最高最低(约几百TPS)
everysec每秒同步适中中(数万TPS)
no系统决定最低最高(十万级TPS)

4.3 生产环境AOF配置样例

appendonly yes
appendfilename "${REDIS_PORT}.aof"
appendfsync everysec# 重写策略
auto-aof-rewrite-percentage 80  # 增长80%触发重写
auto-aof-rewrite-min-size 2gb   # 最小2GB触发# 混合持久化(RDB+AOF)
aof-use-rdb-preamble yes

📁 5、混合持久化实践(Redis 4.0+)

5.1 配置示例

aof-use-rdb-preamble yes  # 开启混合模式

5.2 文件结构解析

# 查看AOF文件头
od -c appendonly.aof | head -n 5# 输出示例(开头REDIS表示RDB格式)
0000000   R   E   D   I   S   0   0   0   8 372  \t   r   e   d   i   s

5.3 重写过程

主进程子进程fork子进程生成RDB快照缓存期间新命令合并生成新AOF主进程子进程

📁 6、持久化监控与维护

6.1 关键监控命令

# 查看持久化状态
redis-cli info persistence# 重点指标
redis-cli info | grep -E "aof_enabled|aof_rewrite|rdb_last_save"

6.2 性能监控指标

# 查看fork耗时(影响RDB性能)
redis-cli info stats | grep latest_fork_usec# AOF缓冲区状态
redis-cli info persistence | grep aof_buffer

6.3 数据恢复实践

从RDB恢复:
# 关闭AOF,放置RDB文件到配置目录
cp dump.rdb /var/lib/redis/
chown redis:redis /var/lib/redis/dump.rdb
systemctl restart redis
从AOF恢复:
# 检查AOF文件完整性
redis-check-aof --fix appendonly.aof# 优先使用AOF恢复
mv appendonly.aof /data/redis/
systemctl restart redis

🧪 7、生产环境最佳实践

7.1 电商平台配置方案

# 主节点配置
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
save 300 100  # 5分钟备份# 从节点配置
appendonly no
save 900 1    # 15分钟备份

7.2 高安全等级配置

# 金融系统配置
appendonly yes
appendfsync always  # 每个命令同步
aof-use-rdb-preamble yes# 双备份策略
save 60 1

7.3 高性能场景配置

# 缓存专用配置
appendonly no
save 3600 100000  # 1小时备份
stop-writes-on-bgsave-error no  # 允许写入优先

🛠️ 8、常见问题解决方案

8.1 RDB fork超时

现象Background save timeout
解决

# 优化内核参数
sysctl vm.overcommit_memory=1
sysctl vm.swappiness=10# 增大超时阈值
redis-cli config set rdb-timeout 300

8.2 AOF文件过大

处理步骤

# 手动触发重写
redis-cli bgrewriteaof# 检查重写进度
redis-cli info persistence | grep aof_rewrite

8.3 持久化导致延迟突增

优化方案

# 限制子进程资源
redis-cli config set rdb-save-incremental-fsync yes
redis-cli config set aof-rewrite-incremental-fsync yes

🔚 9、总结

Redis 持久化机制为内存数据库提供了数据安全保障。合理配置 RDB 和 AOF,能够帮助系统在性能和可靠性之间取得平衡。你可以根据业务场景,灵活使用这两种机制,并结合 Spring Boot 构建健壮的缓存系统。

场景推荐策略配置要点
缓存服务RDB only适当延长save间隔
业务数据库AOF为主everysec同步策略
金融交易AOF always配合主从复制
大数据量混合模式大内存机器优化fork

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89294.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89294.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89294.shtml

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

相关文章

共创 Rust 十年辉煌时刻:RustChinaConf 2025 赞助与演讲征集正式启动

🚀 共创 Rust 十年辉煌时刻:RustChinaConf 2025 赞助与演讲征集正式启动2025年,是 Rust 编程语言诞生十周年的里程碑时刻。在这个具有历史意义的节点,RustChinaConf 2025 携手 RustGlobal 首次登陆中国,联合 GOSIM HAN…

EMS4100芯祥科技USB3.1高速模拟开关芯片规格介绍

EMS4100一款适用于USB Type-C应用的二通道差分2:1/1:2 USB 3.1高速双向被动开关。该器件支持USB 3.1 Gen 1和Gen 2数据速率,具有高带宽、低串扰、宽供电电压范围等特点。EMS4100芯片内部框架:EMS4100主要特性:2-独立频道1:2/2:1 M…

HTML 常用语义标签与常见搭配详解

一、什么是语义标签&#xff1f; 语义标签是 HTML5 引入的一组具有特定含义的标签&#xff0c;用于描述页面中不同部分的内容类型&#xff0c;如页眉、导航栏、主内容区域、侧边栏、页脚等。相比传统的 <div> 和 <span>&#xff0c;语义标签更具表达力和结构化。 …

迁移学习的概念和案例

迁移学习概念 预训练模型 定义: 简单来说别人训练好的模型。一般预训练模型具备复杂的网络模型结构&#xff1b;一般是在大量的语料下训练完成的。 预训练语言模型的类别&#xff1a; 现在我们接触到的预训练语言模型&#xff0c;基本上都是基于transformer这个模型迭代而来…

DAOS系统架构-RDB

1. 概述 基于Raft共识算法和强大的领导地位策略&#xff0c;pool service和container service可以通过复制其内部的元数据来实现高可用。通过这种方法实现具有副本能力的服务可以容忍少数副本中的任何一个出现故障。通过将每个服务的副本分布在容灾域中&#xff0c;pool servic…

深入GPU硬件架构及运行机制

转自深入GPU硬件架构及运行机制 - 0向往0 - 博客园&#xff0c;基本上是其理解。 一、GPU概述 1.1 GPU是什么&#xff1f; GPU全称是Graphics Processing Unit&#xff0c;图形处理单元。它的功能最初与名字一致&#xff0c;是专门用于绘制图像和处理图元数据的特定芯片&…

数值计算库:Eigen与Boost.Multiprecision全方位解析

在科学计算、工程模拟、机器学习等领域&#xff0c;高效的数值计算能力是构建高性能应用的基石。C作为性能优先的编程语言&#xff0c;拥有众多优秀的数值计算库&#xff0c;其中Eigen和Boost.Multiprecision是两个极具代表性的工具。本文将深入探讨这两个库的核心特性、使用场…

第十八节:第三部分:java高级:反射-获取构造器对象并使用

Class提供的获取类构造器的方法以及获取类构造器的作用代码&#xff1a;掌握获取类的构造器&#xff0c;并对其进行操作 Cat类 package com.itheima.day9_reflect;public class Cat {private String name;private int age;private Cat(String name, int age) {this.name name;…

集中打印和转换Office 批量打印精灵:Word/Excel/PDF 全兼容,效率翻倍

各位办公小能手们&#xff01;你们平时办公的时候&#xff0c;是不是经常要打印一堆文件&#xff0c;烦得要命&#xff1f;别慌&#xff0c;今天我给大家介绍一款超厉害的神器——Office批量打印精灵&#xff01; 软件下载地址安装包 这玩意儿啊&#xff0c;是专门为高效办公设…

docker的搭建

一、安装docker使用以下命令进行安装dockerapt-get install docker.io docker-compose使用以下命令进行查看docker是否开启systemctl status docker由此可见&#xff0c;docker没有打开&#xff0c;进行使用命令打开。systemctl start docker再次查看是否开启。肉眼可见&#x…

数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)

数据库管理349期 2025-07-17数据库管理-第349期 Oracle DB 23.9新特性一览&#xff08;20250717&#xff09;1 JavaScript过程和函数的编译时语法检查2 不再需要JAVASCRIPT上的EXECUTE权限3 GROUP BY ALL4 使用SQL创建并测试UUID5 IVF索引在线重组6 JSON到二元性迁移器&#xf…

将CSDN文章导出为PDF

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处前言在日常学习和技术积累过程中&#xff0c;我们经常会在 CSDN 等技术博客平台上阅读高质量的技术文章。然而&#xff0c;网页阅读…

macOS - Chrome 关闭自动更新

进入 Google 相关资源文件夹 删除 GoogleSoftwareUpdate 文件夹 open ~/Library/Google 部分教程推荐&#xff0c;在 chrome://flags/ 页面设置&#xff0c;但最近没看到 自动更新相关开关。2025-07-13&#xff08;日&#xff09;

Python 模块化编程全解析:模块、包与第三方库管理指南

模块与包 模块化编程是什么&#xff1f;用生活例子秒懂 想象你在搭乐高积木&#xff1a; 每个小积木块都有特定功能&#xff08;比如轮子、窗户、墙壁&#xff09;—— 这就像模块&#xff08;一个.py 文件&#xff0c;封装了函数或类&#xff09;。把相关的积木块装进一个盒…

小白学Python,网络爬虫篇(2)——selenium库

前言 selenium 库是一种用于 Web 应用程序测试的工具&#xff0c;它可以驱动浏览器执行特定操作&#xff0c;自动按照脚本代码做出单击、输入、打开、验证等操作&#xff0c;支持的浏览器包括 IE、Firefox、Safari、Chrome、Opera 等。 与 requests 库不同的是&#xff0c;se…

Java安全:SpringBoot项目中Fastjson组件的使用与安全实践

前言 Fastjson是阿里巴巴开源的一个高性能Java JSON库&#xff0c;广泛用于Java对象的序列化和反序列化操作。在SpringBoot项目中&#xff0c;Fastjson常被用作JSON处理工具。然而&#xff0c;Fastjson因其高性能而广受欢迎的同时&#xff0c;也因多次爆出的安全漏洞而备受关注…

x的平方根

给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。注意&#xff1a;不允许使用示例 1&#xff1a;输入&#xff1a;x 4 输出&#xff1a;2示例 2&#xff1a;输入&#xff1…

oracle服务器定时备份Windows Server

-- 创建目录对象&#xff08;若未创建&#xff09;&#xff0c;先建立对应文件夹才能用目录对象CREATE OR REPLACE DIRECTORY dp_dirbackup AS D:\BACKUP; --配置路径 GRANT READ, WRITE ON DIRECTORY dp_dirbackup TO 用户名; --配置用户权限-- 备份脚本&#xff08;保存为每…

HTML data-* 属性 自定义属性

data-* 属性用于存储私有页面后应用的自定义数据。 data-* 属性可以在所有的 HTML 元素中嵌入数据。 自定义的数据可以让页面拥有更好的交互体验&#xff08;不需要使用 Ajax 或去服务端查询数据&#xff09;。 data-* 属性由以下两部分组成&#xff1a;1. 属性名不要包含大写字…

Oracle 大页配置use_large_pages 参数解析

一、前因 再给一位客户的Exdata 2 节点 RAC 19C版本创建数据库并配置好优化参数后&#xff0c;客户一天发来一份健康检查报告&#xff0c;打开一看 use_large_pages 配置异常。 回想安装部署时特意确认了在db启动大页已经生效&#xff0c;为何会有此异常告警项&#xff1f; 二…