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 命令,由于是在触发重写后才会更新文件,可能会丢失重写后的数据。

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

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

相关文章

线性代数|机器学习-P21概率定义和Markov不等式

文章目录 1. 样本期望和方差1.1 样本期望 E ( X ) \mathrm{E}(X) E(X)1.2 样本期望 D ( X ) \mathrm{D}(X) D(X) 2. Markov 不等式&Chebyshev不等式2.1 Markov不等式公式 概述2.2 Markov不等式公式 证明:2.3 Markov不等式公式 举例:2.4 Chebyshev不…

AI绘画 Stable Diffusion图像的脸部细节控制——采样器全解析

大家好,我是画画的小强 我们在运用AI绘画 Stable Diffusion 这一功能强大的AI绘图工具时,我们往往会发现自己对提示词的使用还不够充分。在这种情形下,我们应当如何调整自己的策略,以便更加精确、全面地塑造出理想的人物形象呢&a…

域环境提权

域内提权漏洞(1) Netlogon域权限提升 1.查看域控主机名称 net group "domain controllers" /domain 2.检测漏洞是否存在 https://github.com/SecuraBV/CVE-2020-1472.git python zerologon_tester.py OWA 192.168.52.138 3.漏洞利用,对域账号重置 ht…

《简历宝典》01 - 一文带你学会如何写一份糟糕透顶的简历

我们每个人几乎都会面对找工作这件事,而找工作或者说求职首先就是要写一份简历。今天狗哥将以一个不同的视角带你写一份无与伦比,糟糕透顶的求职简历,说实话,其实几年前,我就是这么写的。 目录 1. 文件名 2. 基本信…

【项目管理】项目风险管理(Word原件)

风险和机会管理就是在一个项目开发过程中对风险进行识别、跟踪、控制的手段。风险和机会管理提供了对可能出现的风险进行持续评估,确定重要的风险机会以及实施处理的策略的一种规范化的环境。包括识别、分析、制定处理和减缓行动、跟踪 。合理的风险和机会管理应尽力…

白骑士的Python教学进阶篇 2.4 高级数据结构

系列目录 上一篇:白骑士的Python教学进阶篇 2.3 文件操作​​​​​​​ 在Python中,掌握高级数据结构可以显著提升你的编程效率和代码可读性。高级数据结构包括列表推导式、生成器与迭代器以及装饰器。本文将详细介绍这些高级数据结构,帮助…

算法刷题1-10大排序算法汇总

十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可…

服务器安装Nginx教程

1、安装所需依赖 yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 2、创建nginx目录并下载Nginx安装包 //进入/usr/local cd /usr/local//创建nginx目录 mkdir nginx//进入nginx目录 cd nginx//下载nginx tar包 wget http://…

Lesson 47 A cup of coffee

Lesson 47 A cup of coffee 词汇 like v. 喜欢,想要 用法:like 物品 / 人 喜欢……    like 动词ing 喜欢做……(习惯性)    like to 动词原形 喜欢做……(一次性) 例句:我喜欢小狗…

[leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差

题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 解析: minDiffInBST 方法是主要方法。创建一个 ArrayList 来存储树的节点值。inorderTrave…

前端日常扫盲

一、js标签语句 直接上代码 for(let i 0; i < 10; i){console.log("顶层循环");for(let j 0; j < 10; j){console.log("内层循环",i,j);if(i * j > 30){console.log("退出顶层循环");break;}} }如上面的代码&#xff0c;双层循环&a…

opencv-yolo-tiny车辆检测 ----20240705

opencv-yolo-tiny 实现车辆检测 opencv.dnn模块已经支持大部分格式的深度学习模型推理,该模块可以直接加载tensorflow、darknet、pytorch等常见深度学习框架训练出来的模型,并运行推理得到模型输出结果。opecnv.dnn模块已经作为一种模型部署方式,应用在工业落地实际场景中。…

持续交付:自动化测试与发布流程的变革

目录 前言1. 持续交付的概念1.1 持续交付的定义1.2 持续交付的核心原则 2. 持续交付的优势2.1 提高交付速度2.2 提高软件质量2.3 降低发布风险2.4 提高团队协作 3. 实施持续交付的步骤3.1 构建自动化测试体系3.1.1 单元测试3.1.2 集成测试3.1.3 功能测试3.1.4 性能测试 3.2 构建…

(一)进程与线程

一、进程和线程的概念 1.1 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个…

鸿蒙系统的开发与学习

1.开发工具的下载 DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 安装、环境配置时&#xff0c;建议 自定义目录 注意&#xff1a;路径中不要有 中文、特殊字符。 2.ArkTS基础总结 1&#xff09;三种数据类型 ① string 字符串&#xff1a;描述信息 ② number 数…

银联快捷支付的优点!

快速支付&#xff0c;又称电子支付或第三方支付&#xff0c;在行业中得到了广泛的应用。用户只需通过银行完成交易。方便快捷是指银行可以在任何条件下支持用户之间的转账、支付等即时结算服务。快速支付是指用户可以通过手机实现银行卡等相关操作。然而&#xff0c;现在大多数…

Java后端每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别&#xff1f;Spring Boot的优点Spring IoC是什么&#xff1f;说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值&#xff1f;如何理解Spring的SPI机制&#xff1f;Spr…

听说现在AI产品经理薪资30k起步?0基础可以转行AI产品吗?

2024年&#xff0c;还有什么新风口&#xff1f; AI、元宇宙、NFT… 很多人不知道&#xff0c;其实不管是元宇宙还是NFT&#xff0c;它们本质上就是人工智能领域。 AI自身应用领域非常广泛&#xff0c;大批高薪岗位随之涌了出来&#xff0c;包括AI产品经理。 AI产品经历具体工…

CSS Float(浮动)

CSS Float(浮动) 概述 CSS Float(浮动)是一种布局技术,它允许开发人员将元素(如图片或文本)沿着其容器的左侧或右侧放置,并且让其他内容围绕它流动。这种技术在过去被广泛用于创建多栏布局,尽管现代CSS提供了更多高级的布局方法(如Flexbox和Grid),但理解浮动仍然…

【LeetCode:841. 钥匙和房间 + DFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…