Redis 7.x 系列【17】四种持久化策略

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 概述
    • 2. 案例演示
      • 2.1 无持久化
      • 2.2 RDB
      • 2.3 AOF
      • 2.4 混合模式
        • 2.4.1 方式一: 同时开启
        • 2.4.2 方式二: 只开启 AOF

1. 概述

持久化官方文档

在前两篇文档中,我们学习了RDBAOF的相关知识,它们各有优缺点。在实际应用中,需要根据场景选择适合的持久化策略。

Redis 支持以下四种方式:

  • 无持久化:同时关闭RDBAOF
  • RDB:只开启RDB
  • AOF:只开启AOF
  • 混合模式:同时支持RDBAOF

2. 案例演示

2.1 无持久化

适用于以下场景:

  • 缓存层:作为数据库查询缓存时,如果数据丢失,可以重新获取并填充到缓存中,持久化不是必需的。
  • 实时分析:在实时数据流处理或分析中,Redis 可能被用作一个中间存储层,用于聚合、过滤或转换数据。由于这些数据通常是实时生成的,并且只在一段时间内需要,因此可能不需要持久化。一旦分析完成或数据过期,它们就可以被丢弃。
  • 临时存储:在某些应用中,Redis 可能被用作临时存储来存储会话数据、临时令牌或其他短生命周期的信息。由于这些数据本质上是临时的,并且在一段时间后会被丢弃或失效,因此可能不需要持久化。

redis.conf中同时关闭RDBAOF

save ""
appendonly no

注意,关闭后是依然可以使用savebgsavebgrewriteaof命令生成文件。

默认启用RDB,所以在安装目录可以看到 dump.rdb 文件:

在这里插入图片描述

dump.rdb 文件删除,然后启动 Redis ,虽然之前存入了数据,但是因为没有恢复文件,所以数据库是空:

在这里插入图片描述
重新存入数据后,由于禁用了 RDB ,所以不会生成dump.rdb 文件,一旦重新启,所有数据将会丢失。

2.2 RDB

Redis 默认启用RDB持久化,只生成单个二进制文件,比AOF性能更好,但是可能会存在数据丢失问题。Redis 本身是十分稳定的,适用于对数据一致性要求不是特别高的场景:

  • 主从复制Redis主从复制架构中,RDB被用作数据同步的一种机制。主节点可以生成RDB文件,然后发送给从节点,用于初次全量复制或连接重建时的快速同步。
  • 恢复和备份RDB 文件是一个紧凑的二进制文件,可以很方便地进行备份、传输和恢复。
  • 缓存层:作为数据库缓存时,如果数据丢失,可以重新获取并填充到缓存中。

redis.conf中开启RDB

# 关闭
# save "" 
# 开启,每隔600秒(10分钟)检查一次,如果在这段时间内至少发生了10次写操作,则执行一次RDB快照保存
save 600 10

存入数据后,关闭Redis 时,会触发生成RDB 文件。重启时会重新加载到内存中。执行多次写入操作,可以看到触发了保存规则,开启了子线程进行RDB生成:

在这里插入图片描述
总结:可以接受在灾难情况下丢失几分钟的数据。

2.3 AOF

AOF 相较于 RDB 其主要缺点就是性能不如 RDB ,适用于数据一致性要求较高的场景。默认情况下是关闭的,需要在redis.conf中主动开启:

# 关闭 RDB
save "" 
# 开启AOF
appendonly yes

重启 Redis 后,在控制台可以看到创建了AOF 的基础文件和增量文件:
在这里插入图片描述
appendonlydir (默认存储目录)下可以看到相关文件:
在这里插入图片描述

2.4 混合模式

RDBAOF 各有特点,在技术选型时是一个权衡点,其特点对比如下:

RDBAOF
持久化机制定期保存快照实时命令追加
文件大小二进制文件,体积较小文本、二进制文件,体积较大
恢复速度原生压缩数据,速度快写命令数据,相对较慢
容灾能力数据可能有丢失数据可能有丢失(最后一条命令或最后一秒)
使用场景定期备份、大规模数据恢复低/轻量级
资源消耗高/重量级数据丢失容忍度低
启动优先级

在官方文档中,有提到如果想要获得与 PostgreSQL 级别的数据安全性,应该同时使用两种持久化方式。
在这里插入图片描述

2.4.1 方式一: 同时开启

在配置文件中同时开启RDBAOF持久化:

# 开启RDB
save 600 10
# 开启AOF
appendonly yes

当触发了规则后,会同时生成RDBAOF文件:

在这里插入图片描述
同时开启的条件下,重启时会优先读取AOF文件:

在这里插入图片描述
这种方式下,同时维护两套持久化机制,对性能会造成一定的影响。

2.4.2 方式二: 只开启 AOF

AOF 本身已经提供了混合持久化机制,在Redis 7.x 系列【16】持久化机制之 AOF中有介绍过一个配置参数:

aof-use-rdb-preamble yes

Redis 6 中,开启此配置后(默认开启),重写 的AOF 文件由两个不同的部分组成:

  • RDB file:数据快照
  • AOF tail:记录写操作

在重启加载过程中,Redis 会识别 AOF 文件以 “REDIS” 字符串开头,并加载 RDB 快照数据,然后继续加载 AOF 相关的内容,以实现更快的重写和恢复速度。

Redis 7 中,开启此配置后(默认开启),在 AOF 重写时,会将当前时刻的数据快照保存为单个的 RDB 文件,后续的写操作也保存为单独的 AOF 文件:

在这里插入图片描述
在全量备份时,这里的 RDB 文件可以作为恢复文件,无需再单独执行 BGSAVE 命令,由于是在触发重写后才会更新文件,可能会丢失重写后的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM - 神经网络的组成

1. 一个神经元的结构:即接受多个输入X向量,在一个权重向量W和一个偏执标量b的作用下,经过激活函数后,产生一个输出。 2. 一层神经网络的结构:该层网络里的每个神经元并行计算,得到各自的输出;计算方式是输入…

CISAW证书考完有什么用?值得投资吗?

CISAW证书,在信息安全领域内被公认为具有高价值的一种职业资格认证,它象征着持有者在该领域的专业技能和知识水平。 因此,CISAW证书不仅具有实质性的价值,还能为持有者带来诸多益处。 首先,拥有CISAW证书的专业人士更…

简过网:教师编制报考要求和条件,都给你汇总好了!

如果你想要考教师编,那么在考试之前你先要明白这些知识! ​ 一、什么是教师编? 在编教师拥有的编制为事业编,即在编老师为事业单位工作人员 二、考教师编需要什么条件? 1、普通话 语文学科普通话要求达到二级甲等及…

5.基于SpringBoot的SSMP整合案例-数据层开发

目录 1.新建项目 2.实体类开发: 2.1在pom.xml中增加Lombok坐标: 2.2添加Book实体类 3.数据层开发: 3.1 配置MyBatisPlus与Druid 3.2创建数据层接口 3.3写测试类 3.4点击运行: 4.数据层快速开发: 4.1配置MyB…

Camera link(学习笔记)

Camera Link协议是一种专门针对机器视觉应用领域的串行通信协议,它使用低压差分信号(LVDS)进行数据的传输和通信。Camera Link标准是在ChannelLink标准的基础上多加了6对差分信号线,其中4对用于并行传输相机控制信号,另外2对用于相机和图像采…

植物学(书籍学习资料)

包含观赏植物学、植物学、植物学百科图鉴等多本植物学方面的书籍学习资料。 图2、3为观赏植物学截图; 图4、5为植物学百科图鉴截图; 图6、7为植物学学习指南截图。

YOLO V7项目使用

YOLO V7项目使用 根据官方论文中提供的项目地址:使用git clone将项目下载到本地。 https://github.com/WongKinYiu/yolov7 git clone https://github.com/WongKinYiu/yolov7 使用pycharm打开项目,根据官方提供的requirement.txt文件下载项目启动所需要的…

ERROR | Web server failed to start. Port 8080 was already in use.

错误提示: *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop the process thats listening on port 8080 or configure thi…

ubuntu下后台启动程序

1.启动 nohup python detect_mq.py > output.out 2>&1 & 这个命令是用来在后台运行一个 Python 脚本 detect_mq.py,并将脚本的输出重定向到文件 output.out。下面是这个命令的详细解释: nohup:这是一个命令,它告诉…

【东奥会计-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

有哪些有效的策略可以提升独立站的外链数量?

有哪些有效的策略可以提升独立站的外链数量?提升独立站的外链数量并不难,难得是不被谷歌惩罚把你的网站判定为作弊,正因如此,了解并应用GNB自然外链策略是个不错的开始,GNB外链的核心价值在于它提高了网站外链资源的自…

2024亚太赛(中文)数学建模B题Python代码+结果表数据教学

B题题目:洪水灾害的数据分析与预测 完整论文也写完了 第二问代码(1、3、4问、还有论文见文末) import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt import seaborn as sns from matplotlib import rc…

2024年软件测试岗必问的100+个面试题【含答案】

一、基础理论 1、开场介绍 介绍要领:个人基本信息、工作经历、之前所做过的工作及个人专长或者技能优势。扬长避短,一定要口语化,语速适中。沟通好的就多说几句,沟通不好的话就尽量少说两句。举例如下: 面试官你好&…

.net core 的 winform 的 浏览器控件 WebView2

在.NET Core WinForms应用程序中,没有直接的“浏览器控件”,因为WinForms不支持像WebBrowser控件那样的功能。但是,你可以使用WebView2控件,它是一个基于Chromium的浏览器内核,可以在WinForms应用程序中嵌入Web内容。 …

Science Robotics 麻省理工学院最新研究,从仿真中学习的精确选择、定位和抓放物体的视触觉方法

现有的机器人系统在通用性和精确性两个性能目标上难以同时兼顾,往往会陷入一个机器人解决单个任务的情况,缺乏"精确泛化"。本文针对精准和通用的同时兼顾提出了解决方法。提出了SimPLE(Pick Localize和placE的仿真模拟)作为精确拾取和放置的解…

昇思25天学习打卡营第9天|MindSpore使用静态图加速(基于context的开启方式)

在Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图。 在静态图模式下,MindSpore通过源码转换的方式,将Python的源码转换成中间表达IR(Intermediate Repr…

电气-伺服(6)脉冲控制

一、脉冲模式原理: 运动控制器输出脉冲信号给伺服驱动器 伺服驱动器工作于位置模式 伺服驱动器内部要完成三闭环(位置闭环 、速度闭环、电流环) 脉冲和伺服控制环:脉冲的个数作用于位置环。脉冲的频率作用于速度环 二、脉冲的两…

ATFX汇市:美国大非农数据来袭,美指与欧元或迎剧烈波动

ATFX汇市:今日20:30,美国劳工部将公布6月非农就业报告,其中新增非农就业人口数据最受关注,前值为27.2万人,预期值19万人,预期降幅高达8.2万人。如果公布值确实如预期一般,美联储降息预期将增强&…

mysql 字符集(character set)和排序规则(collation)

文章目录 概念1、字符集1.1、举例1.2、常见字符集 utf8 和 utf8mb4 区别1.3、字符集 使用 2、排序规则2.1、举例2.2、常见的排序规则 utf8mb4_bin 、utf8mb4_general_ci、utf8mb4_unicode_ci2.3、使用 概念 在 MySQL 中,字符集(character set&#xff0…

昇思25天学习打卡营第8天|ResNet50迁移学习

一、迁移学习定义 迁移学习(Transfer Learning):在一个任务上训练得到的模型包含的知识可以部分或全部地转移到另一个任务上。允许模型将从一个任务中学到的知识应用到另一个相关的任务中。适用于数据稀缺的情况,可减少对大量标记…