详细介绍Redis RDB和AOF两种持久化方式

RDB持久化

RDB是Redis的一种快照持久化方式,它将内存中的数据集都写入磁盘,生成一个RDB文件,RDB文件是一个经过压缩的二进制文件(通常叫做数据快照),可以用于备份、迁移和恢复数据。

RDB的优点是快速、紧凑,适合备份和恢复大量数据,但是它的缺点是数据可能会丢失,因为RDB文件只保存了最后一次快照的数据

执行时机

RDB持久化在以下四种情况下会执行:

1. 执行save命令(Redis持久化命令):

当执行save命令时,Redis会阻塞所有客户端请求,将内存中的数据集快照写入磁盘,生成一个RDB文件。这个过程会阻塞Redis的正常运行(无法响应客户端请求,造成服务中断),保存完成后,Redis会解除阻塞,继续处理客户端请求。

2. 执行bgsave命令(后台持久化命令):

bgsave命令的执行过程中,Redis会先创建一个子进程,然后父进程继续处理客户端请求,而子进程负责将数据集保存到磁盘。这种方式可以保证Redis的正常响应,不会中断服务。 由于bgsave命令是在后台执行的,所以在执行期间无法立即得知保存的进度和结果,可以通过lastsave命令或者检测RDB文件判断保存情况。

3. Redis停机

当Redis服务停机时,无论是正常关闭还是异常退出,都会触发RDB持久化,Redis会执行一次save命令,将数据集快照写入磁盘。

4. 触发RDB条件

用户可以通过设置配置文件(redis.conf)中的save命令来指定触发RDB持久化的条件,

例如:设定在900秒内至少有1个键被修改,就执行一次bgsave命令(如果是save "" 则表示禁用RDB)

# redis.conf文件

save 900 1 

执行原理

bgsave开始时会fork主进程得到子进程(和主进程相同),子进程共享主进程的内存数据,负责将内存中的数据集写入磁盘。

fork命令使用了写时复制(Copy-on-Write)的技术:在主进程执行写操作时,才会真正复制父进程的内存页,而在此之前,子进程与父进程共享相同的内存页,这样可以减少内存的复制开销,提高性能。

AOF持久化

在Redis每次写入操作执行完成后,将该操作以文本的形式追加到AOF文件的末尾,AOF文件是一个文本文件,记录了所有写入操作的历史(也就是记录写操作的命令),可以用于数据恢复。

AOF的执行时机是由Redis自动触发的,由刷盘策略决定。

开启AOF方式方法,修改配置文件redis.conf(不需要关闭RDB,二者可以同时使用)

# redis.conf文件

# 是否开启AOF功能,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"

AOF 3种刷盘策略

刷盘策略刷盘时机优点缺点
always每次写入操作数据安全性最高,几乎不会丢数据性能开销较大
everysec每秒刷盘数据安全较高,性能相对较好性能适中
no操作系统决定刷盘时机性能开销最小数据安全性较低

文件配置

# redis.conf文件(三个选一个)
appendfsync always 
# appendfsync everysec 
# appendfsync no

二者对比

- RDB是快照形式的持久化方式,将数据集的快照以二进制形式保存在磁盘上,而AOF是将写入操作以追加的方式记录到文件中。

- RDB持久化生成的文件较小,加载速度较快。AOF持久化生成的文件较大,加载速度较慢,但可以提供更好的数据安全性。

- RDB持久化可以定期或手动触发,而AOF持久化可以根据不同的刷盘策略进行配置

- RDB持久化对Redis的读取性能没有影响,因为数据是从磁盘加载到内存中,而AOF持久化在写入性能上可能会有一定影响,因为每次写入操作都需要追加到文件中。

- RDB持久化在故障恢复时速度较快,因为只需加载最近的RDB文件即可,而AOF持久化在故障恢复时可能需要较长时间,因为需要重新执行AOF文件中的所有写入操作。

总结:RDB适合备份和恢复大量数据,加载速度快;AOF提供更好的数据安全性,但文件较大且加载速度较慢。

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

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

相关文章

阿里云RDS关系型数据库详细介绍_多版本数据库说明

阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …

德国云安全协作软件提供商【Rencore】完成800万美元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国慕尼黑的云安全协作软件提供商Rencore今日宣布已完成800万美元融资。 本轮融资由UVC Partners领投。 该公司打算利用这笔资金进一步投资于其云协作治理产品的增长。 Rencore由Matthi…

小谈设计模式(12)—迪米特法则

小谈设计模式(12)—迪米特法则 专栏介绍专栏地址专栏介绍 迪米特法则核心思想这里的“朋友”指当前对象本身以参数形式传入当前对象的对象当前对象的成员变量直接引用的对象目标 Java程序实现程序分析 总结 专栏介绍 专栏地址 link 专栏介绍 主要对目…

EasyEdge 智能边缘控制台通过sdk发布应用

离线部署SDK生成 模型部署完成后会出现下载SDK的按钮,点击按钮下载SDK并保存好SDK。 进入EasyDL官网的技术文档 安装智能边缘控制台 跟着教程,完成安装:点此链接 树莓派4b是Linux arm64的架构,点击对应的链接进行下载。 下载完成…

OCI 发布了容器运行时和镜像规范!

7 月 19 日是开放容器计划Open Container Initiative(OCI)的一个重要里程碑,OCI 发布了容器运行时和镜像规范的 1.0 版本,而 Docker 在这过去两年中一直充当着推动和引领的核心角色。 我们的目标是为社区、客户以及更广泛的容器行…

PHP 反序列化漏洞:身份标识

文章目录 参考环境访问修饰符访问修饰符PHP 与访问修饰符 手写身份标识身份标识定义身份标识控制字符 NUL在 PHP 中如何表示空字符? 通过空字符尝试构建包含非公共属性对象的序列化文本 空字符的传输控制字符的不可打印性结论另辟蹊径URL 字符编码将非 ASCII 字符文…

【进阶C语言】自定义类型

本节内容大致目录如下: 1.结构体 2.位段 3.枚举 4.联合(共用体) 以上都是C语言中的自定义类型,可以根据我们的需要去定义。 一、结构体 一些基础知识在初阶C语言的时候已经介绍过,在这里粗略概括;重…

wxWidgets(1):在Ubuntu 环境中搭建wxWidgets 库环境,安装库和CodeBlocks的IDE,可以运行demo界面了,继续学习中

1,选择使用 wxWidgets 框架 选择这个主要是因为完全的开源,不想折腾 Qt的库,而且打包的文件比较大。 网络上面有很多的对比,而且使用QT的人比较多。 但是我觉得wxwidgets 更加偏向 c 语法本身,也有助学习C。 没有太多…

RAID知识点总结

目录 RAID类型 RAID的数据组织及存取方式 RAID热备与重构 RAID逻辑卷 常见的RAID RAID0 RAID 1 RAID3 RAID 5 RAID 6 RAID组合 RAID 10 RAID 50 总结 RAID技术对比 RAID的应用场景 RAID2.0 使用RAID2.0的原因 RAID2.0的发展 RAID2.0技术:两层虚拟…

【深入探究人工智能】:历史、应用、技术与未来

深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 &am…

力扣-338.比特位计数

Idea 直接暴力做法&#xff1a;计算从0到n&#xff0c;每一位数的二进制中1的个数&#xff0c;遍历其二进制的每一位即可得到1的个数 AC Code class Solution { public:vector<int> countBits(int n) {vector<int> ans;ans.emplace_back(0);for(int i 1; i < …

数学建模之Matlab基础操作

作者由于后续课程也要学习Matlab&#xff0c;并且之前也进行了一些数学建模的练习&#xff08;虽然是论文手&#xff09;&#xff0c;所以花了几天零碎时间学习Matlab的基础操作&#xff0c;特此整理。 基本运算 a55 %加法&#xff0c;同理减法 b2^3 %立方 c5*2 %乘法 x 1; …

【C语言数据结构——————栈和队列4000字详解】

欢迎阅读新一期的c语言数据结构模块————栈和队列 ✒️个人主页&#xff1a;-_Joker_- &#x1f3f7;️专栏&#xff1a;C语言 &#x1f4dc;代码仓库&#xff1a;c_code &#x1f339;&#x1f339;欢迎大佬们的阅读和三连关注&#xff0c;顺着评论回访&#x1f339;&#…

Unity把UGUI再World模式下显示到相机最前方

Unity把UGUI再World模式下显示到相机最前方 通过脚本修改Shader 再VR里有时候要把3D的UI显示到相机最前方&#xff0c;加个UI相机会坏事&#xff0c;可以通过修改unity_GUIZTestMode来解决。 测试用例 测试用例如下&#xff1a; 场景包含一个红色的盒子&#xff0c;一个UI…

洛谷P1102 A-B 数对题解

目录 题目A-B 数对题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示传送门 代码解释亲测 题目 A-B 数对 题目背景 出题是一件痛苦的事情&#xff01; 相同的题目看多了也会有审美疲劳&#xff0c;于是我舍弃了大家所熟悉的 AB Problem&#xff0c;改用 …

使用WPS自动化转换办公文档: 将Word, PowerPoint和Excel文件转换为PDF

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【Linux】RPM包使用详解

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

WebSocket的那些事(6- RabbitMQ STOMP目的地详解)

目录 一、目的地类型二、Exchange类型目的地三、Queue类型目的地四、AMQ Queue类型目的地五、Topic类型目的地 一、目的地类型 在上节 WebSocket的那些事&#xff08;5-Spring STOMP支持之连接外部消息代理&#xff09;中我们已经简单介绍了各种目的地类型&#xff0c;如下图&…

分布式搜索引擎es-3

文章目录 数据聚合聚合的种类RestAPI实现聚合 自动补全自定义拼音分词器自动补全查询案例&#xff1a;实现酒店搜索框自动补全自动补全的javaAPI实现搜索框自动补全 口述自动补全数据同步集群集群的分布式存储集群分布式查询集群故障转移 数据聚合 什么是聚合&#xff1f; 聚合…

多网卡场景数据包接收时ip匹配规则

多网卡场景数据包接收时ip匹配规则 mac地址匹配规则 接收数据包时数据包中的目的mac地址匹配接收网卡的mac地址后&#xff0c;数据包才会继续被传递到网络层处理 ip地址匹配规则 图1&#xff1a; 参见&#xff1a;https://zhuanlan.zhihu.com/p/529160026?utm_id0 图2&am…
推荐文章