Redis持久化RDB和AOF区别

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

RDB

RDB是Redis内存到硬盘的快照,用于redis持久化,创建RDB二进制文件,将存储在内存中的数据,持久化的放到硬盘中,当我们需要这些数据的时候,启动载入RDB文件,数据将会被存入内存中,其实RDB就是一种快照的方式持久化存储数据,也可以作为一种复制媒介。

触发机制--主要三种方式

  • save 同步命令(会阻塞redis)
  • bgsave 异步命令(fork)
  • 自动

#关闭自动保存配置#save 900 1 #900秒 改了一次就自动生成RDB文件#save 300 10 #300秒修改了10次就自动生成RDB文件dbfilename dump-${port}.rdb #rdb文件名dir /bigdiskpath #分盘,rdb文件保存位置stop-writes-on-bgsave-error yes #bdsave出错,停止写入rdbcompression yes #采用压缩位置rdbchecksum yes #开启校验和

RDB 的优点

1.RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份: 比如说,你可以在最近的 24 小时内,每小时备份一次 RDB 文件,并且在每个月的每一天,也备份一个 RDB 文件。 前端培训这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。

**2.RDB 非常适用于灾难恢复(disaster recovery) **:它只有一个文件,并且内容都非常紧凑,可以(在加密后)将它传送到别的数据中心,或者亚马逊 S3 中。

3.RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘 I/O 操作。

4.RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

***RDB 的缺点\


如果你需要尽量避免在服务器故障时丢失数据,那么 RDB 不适合你。 虽然 Redis 允许你设置不同的保存点(save point)来控制保存 RDB 文件的频率, 但是, 因为RDB 文件需要保存整个数据集的状态, 所以它并不是一个轻松的操作。 因此你可能会至少 5 分钟才保存一次 RDB 文件。 在这种情况下, 一旦发生故障停机, 你就可能会丢失好几分钟的数据。

每次保存 RDB 的时候,Redis 都要 fork() 出一个子进程,并由子进程来进行实际的持久化工作。 在数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端; 如果数据集非常巨大,并且 CPU 时间非常紧张的话,那么这种停止时间甚至可能会长达整整一秒。 虽然 AOF 重写也需要进行 fork() ,但无论 AOF 重写的执行间隔有多长,数据的耐久性都不会有任何损失。

AOF 的优点

*1.使用 AOF 持久化会让 Redis 变得非常耐久(much more durable) *:你可以设置不同的 fsync 策略,比如无 fsync ,每秒钟一次 fsync ,或者每次执行写入命令时 fsync 。 AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。

AOF 文件是一个只进行追加操作的日志文件(append only log), 因此对 AOF 文件的写入不需要进行 seek , 即使日志因为某些原因而包含了未写入完整的命令(比如写入时磁盘已满,写入中途停机,等等), redis-check-aof 工具也可以轻易地修复这种问题。

Redis 可以在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写: 重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。 整个重写操作是绝对安全的,因为 Redis 在创建新 AOF 文件的过程中,会继续将命令追加到现有的 AOF 文件里面,即使重写过程中发生停机,现有的 AOF 文件也不会丢失。 而一旦新 AOF 文件创建完毕,Redis 就会从旧 AOF 文件切换到新 AOF 文件,并开始对新 AOF 文件进行追加操作。

AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松。 导出(export) AOF 文件也非常简单: 举个例子, 如果你不小心执行了 FLUSHALL命令, 但只要 AOF 文件未被重写, 那么只要停止服务器, 移除 AOF 文件末尾的 FLUSHALL命令, 并重启 Redis , 就可以将数据集恢复到FLUSHALL执行之前的状态。

AOF 的缺点

对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。

根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB 。 在一般情况下, 每秒 fsync 的性能依然非常高, 而关闭 fsync 可以让 AOF 的速度和 RDB 一样快, 即使在高负荷之下也是如此。 不过在处理巨大的写入载入时,RDB 可以提供更有保证的最大延迟时间(latency)。

AOF 在过去曾经发生过这样的 bug : 因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。 (举个例子,阻塞命令 BRPOPLPUSH就曾经引起过这样的 bug 。) 测试套件里为这种情况添加了测试: 它们会自动生成随机的、复杂的数据集, 并通过重新载入这些数据来确保一切正常。 虽然这种 bug 在 AOF 文件中并不常见, 但是对比来说, RDB 几乎是不可能出现这种 bug 的。

然后咱以上就是rdb和aof的优缺点,简单用自己的话来描述一下吧

RDB的优点:简称“3更”

1.体积更小:相同的数据量rdb数据比aof的小,因为rdb是紧凑型文件

2.恢复更快:因为rdb是数据的快照,基本上就是数据的复制,不用重新读取再写入内存

3.性能更高:父进程在保存rdb时候只需要fork一个子进程,无需父进程的进行其他io操作,也保证了服务器的性能。

缺点:

1.故障丢失:因为rdb是全量的,我们一般是使用shell脚本实现30分钟或者1小时或者每天对redis进行rdb备份,(注,也可以是用自带的策略),但是最少也要5分钟进行一次的备份,所以当服务死掉后,最少也要丢失5分钟的数据。

2.耐久性差:相对aof的异步策略来说,因为rdb的复制是全量的,即使是fork的子进程来进行备份,当数据量很大的时候对磁盘的消耗也是不可忽视的,尤其在访问量很高的时候,fork的时间也会延长,导致cpu吃紧,耐久性相对较差。

aof的优点

1.数据保证:我们可以设置fsync策略,一般默认是everysec,也可以设置每次写入追加,所以即使服务死掉了,咱们也最多丢失一秒数据

2.自动缩小:当aof文件大小到达一定程度的时候,后台会自动的去执行aof重写,此过程不会影响主进程,重写完成后,新的写入将会写到新的aof中,旧的就会被删除掉。但是此条如果拿出来对比rdb的话还是没有必要算成优点,只是官网显示成优点而已。

缺点呢:和rdb相反嘛,毕竟只有两种。

1.性能相对较差:它的操作模式决定了它会对redis的性能有所损耗

2.体积相对更大:尽管是将aof文件重写了,但是毕竟是操作过程和操作结果仍然有很大的差别,体积也毋庸置疑的更大。

3.恢复速度更慢:

Redis两种持久化方式 阅读详情

相关推荐

Redis持久化RDBAOF有哪些区别?你知道吗!

前言 关于Redis的知识点总结了一个思维导图分享给大家 Redis是一个内存数据库,为了保证数据不丢失,必须把数据保存到磁盘,这就叫做持久化Redis有两种持久化方法:RDB方式以及AOF方式。 RDB持久化 RDB持久化把内存中的数据持久化到硬盘,生成RDB文件,也就是“快照”。通过RDB文件可以重新恢复内存中的数据。RDB文件是一个压缩过的文件,因此RDB持久化的体积比AOF小,因为存储的是数据,所以恢复很快,性能好,但是可能会丢失最后一次持久化的数据。 RDB持久化机制的两种方式 显示开启

程序媛小琬的博客 1417

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

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

技术铺掌柜 3402

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的专栏 1361

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

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

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

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 持久化方式 - aof rdb 区别

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

wenfh2020的专栏 357

RDBAOF区别

AOFRDB是两种redis持久化的机制。 RDB: RDB是将支持当前数据的快照存成一个数据文件的持久化机制。 1.在生成快照时,将当前进程fork出一个子进程. 2.然后再子进程中循环所有的数据,将数据写入到二进制文件中。 3.当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件,然后子进程退出。 优点: 1.一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这样非常方...

weixin_43783509的博客 2万+

RedisRDBAOF区别

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

weixin_44143114的博客 1860

RDB是什么?·

RDB是什么?

x2656271356的博客 4655

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了,则中间的操作没办法恢复。 .

走在搬砖的路上! 1008

redis持久化RDBAOF区别

一、redis两种持久化方式的介绍 在redis中数据的持久化有两种方式,分别是RDBAOF,如果没有配置持久化redis重启后数据就全丢失了,所以需要开启redis持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(...

H的博客 1020

redis两种持久化方式的区别

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

liuyukuan的专栏 2046
上一篇: JUC 中 4 个常用的并发工具类
下一篇: hdfs数据误删后恢复方式
IT小谷
博客等级 码龄5年 28粉丝 11原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值