redis持久化RDB和AOF的区别

Redis 持久化机制深度解析:RDBAOF区别与应用场景 RedisRDB AOF 持久化机制各有优缺点,适用于不同的业务场景。RDB 适合用于数据备份恢复速度要求高的场景,而 AOF 则适合用于数据安全性要求高的场景。在实际应用中,可以根据业务需求选择合适的持久化策略,或者同时启用两种机制,以兼顾数据安全性恢复速度。通过深入理解 RDB AOF 的工作原理及其区别,我们可以更好地配置优化 Redis持久化策略,确保数据的安全性系统的高性能。 阅读详情

一、redis两种持久化方式的介绍

在redis中数据的持久化有两种方式,分别是RDB和AOF,如果没有配置持久化,redis重启后数据就全丢失了,所以需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢,该如何选择?下面就分别介绍下RDB和AOF两种持久化方式的区别,以便能够在平时的工作中更好的对redis的持久化方式作出选择。

二、RDB和AOF的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

三、RDB和AOF的优缺点

RDB存在哪些优势呢?

1). 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。

2). 对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

3). 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。

4). 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

RDB又存在哪些劣势呢?

1). 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

2). 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

AOF的优势有哪些呢?

1). 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。可以预见,这种方式在效率上是最低的。至于无同步,无需多言,我想大家都能正确的理解它。

2). 由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。

3). 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。

4). AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。

AOF的劣势有哪些呢?

1). 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

2). 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

二者选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。rdb这个就更有些最终一致性的意思了。

四、常用配置

RDB持久化配置

redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:

save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。

save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。

save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

AOF持久化配置

在redis的配置文件中存在三种同步方式,它们分别是:

appendfsync always    #每次有数据修改发生时都会写入AOF文件。

appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。

appendfsync no        #从不同步。高效但是数据不会被持久化。
Redis两种持久化方式 阅读详情

相关推荐

Redis 持久化 AOFRDB区别

‌全称‌:‌R‌edis ‌D‌ata‌b‌ase(Redis 数据库快照)RDB 通过生成内存数据的二进制快照文件(默认文件名dump.rdb),将某一时刻的完整数据库状态持久化到磁盘‌。‌触发方式‌:SAVE(阻塞主线程)或BGSAVE(后台子进程异步生成)。自动触发:通过配置规则(例如save 900 1表示 900 秒内至少 1 次修改触发快照)‌。‌全称‌:‌A‌ppend-‌O‌nly ‌F‌ile(仅追加文件日志)AOF 记录所有写操作命令(如SETHSET。

shao.bing的专栏 1362

Redis持久化AOF&RDB区别是什么?

Redis提供RDBAOF两种持久化方式。RDB通过定时将内存数据dump到磁盘上的二进制文件实现持久化,适合大规模数据备份灾难恢复,但可能丢失最后一次快照后的修改。AOF则记录每个写操作,以日志形式追加到文件中,数据安全性更高,但恢复速度较慢且文件会逐渐增大。两种方式各有优缺点,可根据具体需求性能要求选择,甚至同时使用以确保数据安全可靠性。

技术铺掌柜 3403

关于并网继电器的继电器自检逻辑及实现方式

对于常规的光伏并网逆变器来说,继电器控制至关重要。继电器一般位于逆变电感后,共模电感前,用于将逆变电压与电网电压脱开,一般国外有双继电器的安规强制认证要求,国内目前只需要单继电器要求(后续应该会有双继电器要求,个人感觉)

weixin_29982209的博客 2542

【经验】Redis 持久化机制 RDB AOF 区别

关于 RDBAOF 也会经常在面试时被问到,结合自己做过的应用场景来分析回答,会更有说服力,这会表现出你是如何善用技术的优势来解决问题,这是实战经验中的宝贵经验。关注威哥爱编程,一起卷它个底朝天。

威哥爱编程,华为 HDE,鸿蒙极客、CSDN博客专家、《HarmonyOS NEXT 开发之路》系列图书作者 1279

RedisRDBAOF区别

一、Redis提供了哪些持久化机制 1,RDB持久化: 是在指定的时间间隔内将内存中的数据集快照到磁盘中。 2,AOF持久化: 该机制是以日志追加的形式记录服务器的每一个写操作,当redis服务器启动之初会读取该文件,并加载到数据库中,以保证数据库的数据是完整的。 3,无持久化: 通过配置文件来关闭redis持久化机制。 redis服务器默认是RDB持久化机制。 二、RDB机制的优势劣势 优势: a,该机制只有一个文件,对于文件备份归档是相当完美的方式 b,对于

weixin_44143114的博客 1860

redisrdb aof 持久化区别

redisrdb aof 持久化区别 url: http://ptc.35.com/?p=275 aofrdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。 save, shutdown, slave 命令会触发

jackpk的专栏 5万+

redis持久化---AOFRDB区别

一,RDBAOF区别 RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储 AOF持久化方式记录每次对服务器写的操作,当服务器重启时会重新执行这些命令来恢复原始数据,AOF命令以redis协议追加保存每次写的操作到文件末尾,redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大 只做缓存的时候可以不做任何持久化 同时开启两种持久化方式时 当redis重启时会优先载入A...

weixin_45099622的博客 4353

redis持久化方式RDBAOF区别

redis持久化方式RDBAOF区别 1、前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化redis重启后数据就全丢失了,于是需要开启redis持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入

bamboo_cqh的博客 516

RedisRedis两种持久化RDBAOF区别

文章目录RDB什么是RDB如何持久化SnapshotRDB优点与缺点AOF什么是AOF持久化优点缺点RDBAOF如何选择 Redis持久化备份数据的方式有两种:RDB(Redis DataBase) 、 AOF(Append Only File). RDB 什么是RDB 在指定时间间隔内,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存中,来达到恢复数据的。 如何持久化 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写进一个临时文件中,等到持

瑞新の博客:bennyrhys 2857

redis持久化RDBAOF区别

持久化RDB 定义:在指定的时间间隔内生成数据集的时间点快照 RDB 的优点: 1.RDB 是一个非常紧凑的文件 它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份: 比如说,你可以在最近的 24 小时内,每小时备份一次 RDB 文件,并且在每个月的每一天,也备份一个 RDB 文件。 这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。 2.RDB 非常适用于灾难恢复 它只有一个文件,并且内容都非常紧凑,可以(在加密后)将它传送到别的数据中心,或者亚马逊 S3 中。 3.

tom的博客 1万+

Redis持久化RDBAOF区别

RDB RDBRedis内存到硬盘的快照,用于redis持久化,创建RDB二进制文件,将存储在内存中的数据,持久化的放到硬盘中,当我们需要这些数据的时候,启动载入RDB文件,数据将会被存入内存中,其实RDB就是一种快照的方式持久化存储数据,也可以作为一种复制媒介。 触发机制--主要三种方式 save 同步命令(会阻塞redis) bgsave 异步命令(fork) 自动 #关闭自动保存配置#save 900 1 #900秒 改了一次就自动生成RDB文件#save 300 10 #300秒修改了1

java_atguigu的博客 4630

redis 持久化方式 - aof rdb 区别

aof rdbredis 持久化的两种方式。我们看看它们的特点具体应用场景区别。 此博客将逐步迁移到作者新的博客,可以点击此处进入。 文章目录持久化特点aofrdb使用场景区别持久化详细文档 持久化特点 aof aof 是写命令追加到持久化文件的方式。 aof 支持几种持久化策略,其中每秒数据增量存盘一次效率比较高。 aof 支持 rdb 混合型存储(需要重写处理)。 aof...

wenfh2020的专栏 357

Redisredisrdb aof 持久化区别

redisrdb aof 持久化区别 www.cnblogs.com100000/300000/1000000 aofrdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。save, shutdown, slave 命令会触发这个操作。粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。 .

走在搬砖的路上! 1009

redis两种持久化方式的区别

整个重写操作是绝对安全的,因为 Redis 在创建新 AOF 文件的过程中,会继续将命令追加到现有的 AOF 文件里面,即使重写过程中发生停机,现有的 AOF 文件也不会丢失。①、AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.默认的AOF持久化策略是每秒钟fsync一次(fsync是指把缓存中的写指令记录到磁盘中),因为在这种情况下,redis仍然可以保持很好的处理性能,即使redis故障,也只会丢失最近1秒钟的数据。

liuyukuan的专栏 2046

Redis持久化RDBAOF区别

AOF(Append Only File):记录所有执行的写入命令到AOF文件中,但肯定不能每执行一条写入命令就记录到文件中,那会严重拖垮性能,于是会准备一个缓冲区,区别于这个缓冲区,操作系统也有一个缓冲区,所以我们需要通过刷新来保证正常写入,可以根据设定的参数来写入并刷新AOF文件,always: 每个事件周期都同步刷新一次。AOF重写缓冲区:如果子进程在压缩重写过程中,AOF文件有了新的写入,那么新的写入会进入缓冲区,重写结束后,缓冲区中的命令会被写入到新的AOF文件中。

qq_61504864的博客 1153

redisRDBAOF持久化区别

RDB介绍 1、触发机制: save手动触发:阻塞当前redis服务器,直到rdb过程完成。不建议使用 bgsave手动触发:fork创建子进程,由子进程完成持久化。阻塞只存在fork阶段。 自动触发: save m n (在m内修改n次,自动触发bgsave) 从节点执行全量复制,主节点自动执行bgsave 执行debug reload命令,触发sa...

qq_21387121的博客 764

详解Redis持久化机制--RDBAOF

转载:https://www.toutiao.com/i6689633692647686667/ 概述 redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来持久化,以确保redis 的数据安全。不过持久化这块可能比较容易产生误解,下面聊聊这块。 Redis持久化是如何工作的? 什么是持久化?简单来讲就是将数据...

weixin_34112900的博客 434

Windows上python的spark环境搭建

1.安装好JDK 下载并安装好jdk-12.0.1_windows-x64_bin.exe,配置环境变量: 新建系统变量JAVA_HOME,值为Java安装路径 新建系统变量CLASSPATH,值为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(注意最前面的圆点) 配置系统变量PATH,添加 %JAVA_HOME%bin;%JAVA_HOME%jrebin 在CMD中输入:java或者java -version,不显示不是内部命令等,说明安装成功。

weixin_43915303的博客 625

语音分离基于matlab FastICA语音信号采集+混合+分离【含Matlab源码 008期】.zip

CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务;1、代码压缩包内容主函数:ICADemo.m;调用函数:其他m文件; 语音信号,其格式为MP4;运行结果效果图;2、代码运行版本Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主;3、运行操作步骤步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开ICADemo.m文件;(若有其他m文件,无需运行)步骤三:点击运行,等程序运行完得到结果;4、语音处理系列仿真咨询如需其他服务,可私信博主或扫描博主博客文章底部QQ名片;4.1 CSDN博客或资源的完整代码提供4.2 期刊或参考文献复现4.3 Matlab程序定制4.4 科研合作语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等;

上一篇: redis 配置主从读写分离
下一篇: 深入了解MyBatis二级缓存
hwmhehe
博客等级 码龄13年 86粉丝 106原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值