Redis的持久化机制是怎样的?

Redis提供了两种持久化的机制,分别的RDB和AOF。

RDB
RDB是将Redis的内存中的数据(以快照的形式)定期保存到磁盘上,以防治数据在Redis进程异常退出或服务器断电等情况下丢失。

RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。
RDB的缺点是:定期更新可能会丢数据

AOF
AOF是将Redis的所有写操作追加到AOF文件(Append Only File)的末尾,从而记录了Redis服务器运行期间所有修改操作的详细记录。当Redis重新启动时,可以通过执行AOF文件中共保存的写操作来恢复数据。

但是如果Redis刚刚执行完一个写命令,还没来的急写AOF文件就宕机了,那么这个命令和相应的数据就会丢失了。但是它也比RDB要更加靠谱一些。

AOF的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据备份。

AOF的缺点是:文件大专用空间更多,每次写操作都需要写磁盘导致负载较高。

比较
RDB和AOF在数据可靠性、性能、存储空间等方面都有不同的优缺点,具体可以根据实际业务需求和硬件条件来选择合适的持久化机制,或者同时使用两种持久化机制来实现更高的数据可靠性。

特性RDBAOF
数据可靠性可能会丢失最后一次快照之后的数据保证最后一次写操作之前的数据不会丢失
性能读写性能较高,适合做数据恢复写性能较高,适合做数据存档
存储空间占用快照文件较小,占用空间较少AOF文件较大,占用空间较多
回复时间从快照文件中共恢复数据较快从AOF文件中恢复数据较慢

混合持久化
RDB和AOF各自有优缺点,为了让用户能够同时拥有上述两种持久化的优点,Redis4.0推出了RDB-AOF混合持久化。

在开启混合持久化的情况下,AOF重写时会把Redis的持久化数据,以RDB的格式写入到AOF文件的开头,之后的数据再以AOF的格式化追加到文件的末尾。

aof-use-rdb-preamble是开启混合模式的参数。

混合持久化结合了RDB和AOF持久化的优点,开头为RDB的格式,使得Redis可以更快的启动,同时结合AOF的优点,又减低了大量数据丢失的风险。

但是,在AOF文件中共添加了RDB格式的内容,使得AOF文件的可读性变得很差;如果开启混合持久化,那么此混合持久化AOF文件,是不能用在旧版本中的,不向下兼容的。

扩展知识
Redis能完全保证数据不丢失吗?
不能,因为Redis是基于内存存储的,当Redis进程异常退出或服务器断电等情况发生时,内存中的数据可能会丢失。

未了防止数据丢失,Redis提供了RDB和AOF的持久化机制,Redis可以将数据从内存保存到磁盘中,以便在Redis进程异常退出或服务器断电等情况下,通过从磁盘中加载数据来恢复数据。

但是,持久化机制也不是绝对可靠的,归根结底Redis还是个缓存,它并不是完全给你做持久化用的,所以还是要有自己的持久化方式,比如双写到数据库。

因此,未了最大程度的保障数据安全,建议采用多种手段来提高数据可靠性,如定期备份数据、使用主从复制机、使用集群模式等。

AOF的三种回写策略
AOF有三种数据写回策略,分别是Always,Everysec和No。

Always,同步写回:每个写命令执行完,立马同步地将日志写回磁盘;

Everysec,每秒写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区的内容写入磁盘;

No,操作系统控制的写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,有操作系统决定何时将缓冲区内容写回磁盘。

“同步写回”可靠性肯定是最高的,但是它在每一个写命令后都有一个落盘操作,而且还是同步的,这和直接写磁盘类型的数据库有啥区别?

“操作系统控制的写回”这种事最不靠谱的,谁知道操作系统啥时候帮你做持久化,万一没来及持久化就宕机了,不就gg了。

“每秒写回”是在二者之间这种了一下,异步的每秒把数据写回到磁盘上,最大程度的提高效率和降低风险。.

Always也不能保证不丢
即使是在always策略下,也不能保证100%不丢失数据的,主要处于一下原因:

1.磁盘和系统故障:如果在写入操作和同步到磁盘之间发生硬件故障或系统崩溃,可能会丢失最近的写操作。

2.操作系统缓冲区:即使Redis请求立即将数据同步到磁盘,操作系统的I/O缓冲区可能会导致实际写入磁盘的操作延迟发生。如果在写入缓冲区之后,没写磁盘钱,机器挂了,那么数据就丢了。

操作系统缓冲区,通常是操作系统用于管理数据输入输出(I/O)的一种内存区域。当程序进行文件写入操作时,数据通常首先被写入到这个缓冲区,而不是直接写入到硬盘。

3.磁盘写入延迟:磁盘的写入并非实时完成,特别是在涉及到机械硬盘时,写入延迟主要由磁盘旋转速度(RPM)和寻道时间决定。如果在这个延迟过程中,机器挂了,那么数据也就丢了。

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

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

相关文章

Maven package classifier测试

package package阶段会生成一个jar文件,包含了main文件夹下编译后的资源。可作为其他项目的依赖引用。 classifier install后,在仓库中存放的artifact的最终文件,即将package最终文件存入仓库,若在打包时需要加以定制&#xff…

双目的Occupancy——Occdepth

文章目录 论文链接:[https://arxiv.org/pdf/2302.13540.pdf](https://arxiv.org/pdf/2302.13540.pdf)、代码链接: [https://github.com/megvii-research/OccDepth](https://github.com/megvii-research/OccDepth) 网络结构:Stereo moudule 通…

政策导向与行业发展

方向一:政策导向与行业发展 政府工作报告中对计算机行业的政策导向主要包括促进信息技术与实体经济深度融合、推动数字化转型升级、加强网络安全和数据保护等。这些政策的出台将直接影响着计算机行业的发展方向和企业的经营策略。 首先,政府将进一步推…

C 指向数组的指针

组名本身是一个常量指针,意味着它的值是不能被改变的,一旦确定,就不能再指向其他地方。 因此,在下面的声明中: double balance[50];balance 是一个指向 &balance[0] 的指针,即数组 balance 的第一个元…

Orcale一些面试题20道

1. 下面哪个用户不是ORACLE缺省安装后就存在的用户( A ) A . SYSDBA B. SYSTE C. SCOTT D. SYS 2、带有(B)字句的SELECT语句可以在表的一行或多行放置排他锁。 A .? FOR INSERT B.? FOR UPDATE C.? FOR DELETE D.? FOR REFRESH 3. 在Oracle中&am…

【线段树二分】第十三届蓝桥杯省赛C++ A组/研究生组 Python 研究生组《扫描游戏》(C++)

【题目描述】 有一根围绕原点 O 顺时针旋转的棒 OA,初始时指向正上方(Y 轴正向)。 在平面中有若干物件,第 i 个物件的坐标为(,),价值为 。 当棒扫到某个物件时,棒的长度会瞬间增长 &#xff…

解决: MAC ERROR [internal] load metadata for docker.io/library/openjdk:17

错误信息: ERROR [internal] load metadata for docker.io/library/openjdk:17 ERROR: failed to solve: openjdk:17: error getting credentials - err: exit status 1, out: 解决方法: running this command rm ~/.docker/config.json before …

pycharm使用远程服务器的jupyter环境

1、确保服务器上安装了jupyter,如果没有,执行下面命令安装 pip install jupyter2、启动jupyter notebook服务 jupyter notebook --no-browser --port8888 --ip0.0.0.0 --allow-root表明在服务器的8888 端口上启动 Jupyter Notebook,并允许从任何 IP 地…

【NC18386】字符串

题目 字符串 题目又叫字符串,但是这道题是真正的关于字符串的题 思路 这道题可行的我能想出来的思路有两个,一个是二分,先猜测一个答案,然后验证这个答案,但是由于这种方法时间复杂度不如另一种方法:双指…

【React】React表单组件

在React中,表单组件是用来处理用户输入的重要部分。React提供了多种方式来处理表单,包括受控组件(Controlled Components)和非受控组件(Uncontrolled Components)。同时,表单组件也涉及到一些交…

第十届 “MathorCup“- B题:养老服务床位需求预测与运营模式研究

目录 摘 要 一、问题重述 二、问题分析 三、模型假设 四、符号说明

基于ACO蚁群优化的UAV最优巡检路线规划算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 蚂蚁移动和信息素更新 4.2 整体优化过程 5.完整程序 1.程序功能描述 基于ACO蚁群优化法的UAV最优巡检路线规划。蚁群优化算法源于对自然界蚂蚁寻找食物路径行为的模拟。在无人机巡检路…

【Pytorch】利用PyTorch实现图像识别

1. 背景介绍 图像识别是计算机视觉领域的一个重要分支,它涉及到让计算机能够像人类一样理解和解释图像中的内容。随着深度学习技术的快速发展,基于卷积神经网络(CNN)的图像识别方法已经取得了显著的成果,并在许多实际…

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况?

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况? 除《网络安全法》《数据安全法》和《个人信息保护法》确立的数据和网络安全整体体系外,企业还应当考虑其他相关法律法规的要求。 例如: ✮如根据《中华人民…

Python(Socket) +Unreal(HTTP)

Python(Socket) Unreal(HTTP) python(Socket):UE:Post请求并发送本机IP 上班咯,好久没记笔记了。。。 局域网 UE的apk,请求Python的Socket 跑起Socket ,UE发 …

vue 文件预览(docx、.xlsx、pdf)

1.ifream <iframe src"" ></iframe> 注: src里面是文件地址 2.vue-office 支持vue2和vue3提供docx、.xlsx、pdf多种文档的在线预览方案 2.1安装 #docx文档预览组件 npm install vue-office/docx vue-demi#excel文档预览组件 npm install vue-office…

科技引领趋势:3D元宇宙展厅在各行业中的应用及其未来展望

随着技术的不断进步&#xff0c;3D元宇宙展厅正逐渐成为各行各业展示产品的新选择。相较于传统的线下展厅&#xff0c;3D元宇宙展厅以其独特的优势&#xff0c;为产品展示和品牌推广提供了全新的可能性。 一、虚拟与现实的完美融合 3D元宇宙展厅是指在虚拟世界中构建的三维展览…

设计模式之抽象工厂模式精讲

概念&#xff1a;为创建一组相关或相互依赖的对象提供一个接口&#xff0c;而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本。在存在多个业务品种或分类时&#xff0c;抽象工厂模式是一种更好的解决方式。 抽象工厂模式的UML类图如下&#xff1a; 可以看…

1781字符串比大小

//不要用printf去输出string //string可以直接用大于小于号去比较 #include<bits/stdc.h> using namespace std; int main(){ string max"0",s; int len1,len2,mark1,n; cin>>n; cout<<max.size(); for(int i1;i<n;i){ …

Java零基础-集合:遍历

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…