【从零开始学习Redis | 第十一篇】快速介绍Redis持久化策略

news2024/10/5 19:12:33

前言: 

        Redis 作为一种快速、高效的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景。然而,由于其特性是基于内存的,一旦服务器进程退出,内存中的数据就会丢失。为了解决这一问题,Redis 提供了持久化功能,可以将内存中的数据保存到硬盘上,以便在服务器重启时恢复数据。持久化是 Redis 的关键特性之一,对于确保数据的安全性和可靠性至关重要。本文将深入探讨 Redis 的持久化策略,包括常用的持久化方式以及各自的优缺点

目录

前言: 

RDB:

执行方式: 

缺点:

AOF:

工作原理:

执行方式:

总结:


当Redis崩溃之后,Redis中的数据就会丢失掉。在Redis重建缓存的过程中,如果有大量请求访问,就会直接打到MySQL中,有可能会导致MySQL崩溃。

归根结底是因为:我们没有给Redis中的数据做持久化。而Redis本身它是有持久化策略的,那就是RDBAOF

RDB:

RDB  的全称是Redis Database Backup file(Redis数据备份文件),也叫做Redis数据快照。

  1. 工作原理

    • Redis 在指定的时间间隔内(由用户配置),将内存中的数据库状态以快照的形式保存到磁盘上。
    • Redis 会 fork 出一个子进程来执行保存操作,父进程继续处理客户端请求。这样可以避免阻塞主进程,保证了服务的正常响应。
  2. 生成的文件

    • RDB 文件是一个经过压缩的二进制文件,通常以 .rdb 为扩展名。
    • RDB 文件记录了 Redis 在某个时间点上的数据库状态,包括所有的键值对、过期时间、数据库配置等信息。

执行方式: 

手动执行RDB:

Redis主进程执行RDB,阻塞其他命令

SAVE

 Redis子进程执行RDB,主进程仍然可以接收命令

BGSAVE

自动执行RDB:

Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下:

这里官方为我们提供了三种RDB的触发频率:

  • 每 3600 秒(1 小时),如果至少有 1 次写操作;
  • 每 300 秒(5 分钟),如果至少有 100 次写操作;
  • 每 60 秒,如果至少有 10000 次写操作。

 BGSAVE的命令流程:

BGSAVE有一个问题:当我们开启子进程去写RDB文件的时候,此时主进程仍然是可以接受用户命令的。在这个过程中就可能会出现脏数据。 

缺点:

  1. 全量备份

    • RDB 是一种全量备份方式,它只会保存生成 RDB 文件时的数据库状态。这意味着如果 Redis 服务器意外崩溃,最后一次保存后的所有数据更改都将丢失。对于一些对数据完整性要求极高的应用,这种全量备份的方式可能不够理想。
  2. 数据丢失风险

    • RDB 持久化的保存间隔可以设置得很长,例如默认的每小时一次,或者更长。如果 Redis 服务器在两次保存之间崩溃,将会丢失整个时间段内的所有更改,导致数据丢失的风险。
  3. 性能开销

    • 在执行 RDB 持久化时,Redis 会 fork 出一个子进程来执行保存操作。这个过程中需要消耗一定的系统资源和时间,可能会影响 Redis 服务器的性能。特别是在数据量较大、保存频率较高的情况下,保存操作可能会导致系统负载升高,甚至影响到用户请求的响应时间。
  4. 不适合实时备份

    • 由于 RDB 是全量备份,生成 RDB 文件的过程可能会消耗大量的时间和资源,因此不适合在实时或高频率的数据备份场景中使用。如果需要实时备份,可能需要考虑其他方式,比如使用 AOF(Append-Only File)持久化方式。
  5. 可用性和恢复时间

    • 在使用 RDB 持久化时,恢复数据通常需要加载整个 RDB 文件,这可能会导致较长的恢复时间,尤其是当数据量较大时。这会影响 Redis 服务器的可用性,特别是在紧急情况下需要快速恢复服务时。

我们可以简单的理解把RDB理解为定期持久化内存数据库中的所有数据

AOF:

AOF全程叫做 Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF中,可以看作是命令日志文件。

工作原理:

  1. 追加写入

    • Redis 将每个写操作以追加的方式记录到 AOF 文件末尾,而不是像 RDB 那样周期性地保存整个数据集的快照。这意味着 AOF 文件包含了重放服务器写操作所需的所有信息。
  2. 重放恢复

    • 当 Redis 重新启动时,它会按顺序重放 AOF 文件中的写操作,以恢复服务器的状态。通过逐行执行 AOF 文件中的命令,Redis 可以将数据集恢复到最后一次保存时的状态。
  3. 重写机制

    • 为了避免 AOF 文件过大而影响性能,Redis 提供了 AOF Rewrite 机制。AOF Rewrite 会在后台启动一个子进程,该进程会重新生成一个新的 AOF 文件,但新文件的大小通常会比原始文件小得多,因为它只包含重要的写操作指令。重写后的 AOF 文件可以替代原始文件,以节省磁盘空间并提高性能。

执行方式:

AOF默认是关闭的,我们可以通过修改redis.conf配置文件来开启AOF:

AOF文件的名称: 

 AOF执行策略:

官网一共为我们提供了三种执行策略:

配置项刷盘时机优点缺点
Always同步刷盘可靠性高,几乎不丢数据对性能要求高
everysec每秒刷盘性能适中最多丢失一秒数据
no操作系统控制性能最好可靠性差,可能会丢失大量数据

可以用图来展示AOF的机制 

这里其实就暴漏了AOF的一个问题:可能会记录大量无意义的命令。比如我们记录对一个Key的多次写操作,但是只有最后一次才有意义。

通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同的效果。而Redis也会在阈值触发的时候自动重写AOF文件,阈值也可以在redis.conf中进行配置:

总结:

         Redis 的持久化策略是确保数据安全性和可靠性的重要手段之一。通过持久化,Redis 可以将内存中的数据定期写入到硬盘上,从而在服务器重启时能够恢复数据。本文介绍了 Redis 的两种主要持久化方式:RDB(Redis DataBase)AOF(Append Only File),并分析了它们各自的优缺点。RDB 方式适用于备份和恢复大量数据,而 AOF 方式则适用于实时数据的持久化和灾难恢复。合理选择和配置持久化方式,可以根据业务需求和性能要求来平衡数据的安全性和性能。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

删除表空间

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 当某个表空间中的数据不再需要时,或者新创建的表空间不符合要求时,可以考虑删除这个表空间。若要删除表空间,则需要用户具有 DROP TABLESP…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数(默认参数) 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑,许多现代计算机语言都受C语言的影响。C语言是面向过程的,结构化和模块化…

社交媒体数据恢复:皮皮搞笑

一、数据恢复前的准备 在开始数据恢复之前,请确保您已经完成了以下准备工作: 确认您具有管理员权限,以便在操作过程中避免不必要的错误。 确保您的设备电量充足,以免在数据恢复过程中因电量不足而导致数据丢失。 如果您需要恢复…

解决el-upload组件上传文件403 Forbidden的问题

话不多说,上错误。网络显示: 控制台显示: 并且后端也没接收到任何的请求。 只需要把前端中的组件: action的路径修改为: 也就是不写前面的localhost,而是拼接上发送请求拼接的‘api’即可 可以看到&#x…

【前端】CSS基础(2)

文章目录 前言1、CSS选择器1.1选择器的功能1.2 选择器的种类1.2.1 基础选择器1.2.1.1 标签选择器1.2.1.2 类选择器1.2.1.3 id选择器1.2.1.4 通配符选择器1.2.1.5 伪类选择器 1.2.2 复合选择器1.2.2.1 后代选择器1.2.2.2 子选择器1.2.2.3 并集选择器 前言 这篇博客仅仅是对CSS的…

风电功率预测 | 基于RBF径向基神经网络的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于RBF(径向基函数)神经网络的风电功率预测是一种常见的方法。RBF神经网络是一种前馈神经网络,其隐藏层使用径向基函数作为激活函数。 下面是一个基于RBF神经网络的风电功率预测的一般步骤: 数据收集:收集包括风速、风向…

鉴源论坛·观通丨轨交软件测试技术详述

作者 | 刘艳青 上海控安安全测评部测试经理 版块 | 鉴源论坛 观通 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 集成测试技术要求 1.1 总体要求 对软件集成测试进行静态测试应先于动态测试; 集成过程是动态进行的,在测…

软件工程期末复习(7)需求过程

需求分析 需求过程 什么是需求过程? 需求过程是用来导出、确认和维护系统需求文档的一组结构化活动。通常,一个良好的需求过程应包括下列活动: 需求提取需求分析和协商需求确认 需求提取 需求提取是通过与客户、系统用户和其他与系统开发相…

谷歌I/O 2024大会全面硬刚OpenAI

🦉 AI新闻 🚀 谷歌发布升级版Gemini机器人 竞争OpenAI ChatGPT-4 摘要:谷歌展示了升级版的 Gemini 聊天机器人,其支持实时处理视频和语音输入,并准确回答问题。此次发布时机与 OpenAI 公布 ChatGPT-4o 新模型几乎同步…

C++多态实现原理详解

阅读引言: 我想象了一下, 假如人有突然问我什么是多态, 我该如何给别人说清楚呢?所以写下这篇文章, 希望大家看完有所收获。 目录 ①. 开胃小菜 ②. 多态常见的一个小小面试题 ③, 虚函数指针虚函数表 …

FPGA - Xilinx系列高速收发器---GTX

1,GTX是什么? GT :Gigabit Transceiver千兆比特收发器; GTX :Xilinx 7系列FPGA的高速串行收发器,硬核 xilinx的7系列FPGA根据不同的器件类型,集成了GTP、GTX、GTH、GTZ四种串行高速收发器&am…

ARM机密计算组件

安全之安全(security)博客目录导读 目录 ​一、硬件架构 1、RME 二、软件和固件架构 1、RMM 2、其他固件标准(例如PSCI) 三、开源实现 1、TF-A 2、Veraison 3、工具链 四、动态TrustZone技术 Arm机密计算架构(Arm CCA)引入了一系列硬件和软件…

信息化总体架构方法_2.信息化工程建设方法

1.信息化架构模式 信息化架构一般有两种模式,一种是数据导向架构,一种是流程导向架构。对于数据导向架构重点是在数据中心,BI商业智能等建设中使用较多,关注数据模型和数据质量;对于流程导向架构,SOA本身就…

如何利用3D可视化大屏提升信息展示效果?

老子云3D可视化平台https://www.laozicloud.com/ 引言 在信息爆炸的时代,如何有效地传达和展示信息成为了各行各业的一大挑战。传统的平面展示方式已经无法满足人们对信息展示的需求,3D可视化大屏应运而生,成为了提升信息展示效果的利器。本…

二分法的时间复杂度是logN

对数函数: (a>0, a≠1, x>0) 当αe时,记为yln x 当α10时,记为ylg x 当α2时,记为ylog x 其中x是自变量,函数的定义域是(0,∞),…

数智转型 聚创未来 | 2024达索系统企业转型智造论坛汽车零部件专场

报名链接: 数智转型 聚创未来https://3ds.tbh5.com/3ds/ureg.aspx?fwbestway

Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测) 模型设计 融合Adaboost的CNN-BiLSTM模型的时间序列预测,下面是一个基本的框架。 数据准备: 收集并整理用于时…

环境光遮蔽技术在AI去衣应用中的创新探索

引言: 随着计算机视觉和人工智能技术的飞速发展,AI去衣技术逐渐走进公众视野。这一技术以其独特的应用前景和技术挑战引起了广泛的关注。在实现衣物去除的同时保持图像质量的关键技术之一,便是环境光遮蔽技术。本文将深入探讨环境光遮蔽技术在…

“Linux”的vi / vim目录编辑器

在前面中我们了解到Linux中的基础命令,20多个命令每个记住格式是:命令 选项 参数或者文件名,下面在了解一下最后两个命令:tree命令和find命令 一、补充的命令 (1)tree 作用:以竖状显示文件…

什么是BI看板?选择BI看板制作工具时一定要考虑这些方面

BI看板也称为商业智能仪表板,是一种直观的数据可视化工具,它将关键业务指标(KPIs)和数据以图表、图形和表格的形式集中展示,使用户能够快速获取企业运营的实时概览。 这种数据可视化方式不仅使得复杂的数据信息易于理…