redis持久化之RDB、AOF机制比对

RDB(Redis DB)

1.按特定的时间间隔来为数据集做快照,并以二进制数据的方式存储到硬盘上。

2.每次持久化都是将全量数据写入,而不是增量

3.每次写入时先将数据写入临时文件再替换掉原来的rdb文件

 以下3种常见的创建方式:

 1>服务器执行客户端发送的SAVE命令

 2>服务器执行客户端发送的BGSAVE命令

 3>使用save配置选项设置自动保存条件被满足,服务器自动执行BGSAVE

优点:

1.RDB是一个单独的文件,方便备份以及灾难恢复

2.写数据的模式为parent进程fork出一个子进程来进行磁盘io操作,而parent进程则不需要参与io操作

3.在数据比较大的情况下,启动速度比AOF快

缺点:

1.该模式下如果redis崩溃或者断电情况下可能有数据丢失;因为RDB是按照固定策略(如10秒刷入一次或者5分钟内写入100条数据则刷入磁盘等)来持久化的,那么则断电或者服务崩溃的情况下可能会丢失某一个时间段的数据

2.RDB在进程持久化时需要fork子进程来做磁盘操作,当数据集比较大时fork操作非常耗时,而且在fork过程中server是不能对client服务的;AOF虽然也需要fork但是我们可以设置多久重写一次日志



AOF(Append Only Flie)

1.服务端为每个写操作记录日志;

2.如果服务重启,则根据所记录的log来进行重放来重建整个数据集。

3.日志的记录使用的是redis自己的协议,以追加的模式记录。

4.如果日志过大,redis可以在后台重写日志文件

优点:

1.可以设置各种fsync策略:从不刷数据、每秒同步一次(默认)、每次查询时同步,使用默认策略时可能会丢失最近一秒数据;当配置从不刷数据是由主线程在当前进程没有在刷数据时尽可能的来同步数据到文件,默认策略时会启动一个后台子线程来同步数据到文件

2.日志文件是追加模式,在断点后不牵扯到文件指针查找以及数据丢失问题;就算是因为某些原因(如磁盘写满等)导致日志文件最后一条只写入了一半也可以通过redis-check-aof工具来修复

3.当日志文件过大时,redis会自动重写日志文件(新的文件只保留创建当前数据集需要用到的命令);在重写的过程中同时还会往老的日志文件写入,一旦新的文件处理完成,redis会切换至新的文件

4.日志文件内容简单清晰,方便人工干预。例如我们调用flushall来刷新保存所有数据失败,如果此时日志文件没有其他命令写入,我们可以停掉server,删掉日志中最后一条错误,然后重新启动来恢复数据

缺点:

1.相同数据集下,AOF模式对应文件通常比RDB对应文件大

2.AOF在某些策略下比RDB模式慢。比如,将fsync设置为每秒一次时,性能仍然很高;将fsync禁用时,性能和RDB接近

3.有些命令可能在AOF下有问题,如BRPOPLPUSH命令在AOF下重新加载时重放失败

说明:

在同一个实例中可以同时使用RDB和AOF持久化机制;但是在服务启动时使用AOF机制来重建数据集(因为AOF最大程度的保留了数据的完整性)

选择:

1.如果要严格保证数据完整性,则RDB与AOF同时使用

2.如果可以容忍少量数据丢失,则使用RDB

3.不建议单独使用AOF(因为RDB备份更方便,重新启动相对较快

3.数据持久化化最好的方案就是集群模式,后续文章中在介绍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RDBRedis Database)和AOF(Append-Only File)是Redis中两种常见的持久方式,它们有以下区别: 1. RDB持久RDB是将Redis数据库在某个时间点的数据快照保存到硬盘上的一种方式。它通过fork一个子进程来完成持久操作,首先将数据写入一个临时文件,然后用这个临时文件替换上一个RDB文件,从而实现数据的持久RDB方式适合用于备份、灾难恢复和数据库迁移等场景。 2. AOF持久AOF是通过将Redis的写命令追加到文件的末尾来记录数据库的操作。Redis重启时,通过重新执行AOF文件中的命令来恢复数据库状态。相比于RDB方式,AOF可以提供更高的数据安全性,因为它记录了每个写操作的历史,可以保证在Redis异常退出或宕机时不会丢失数据。AOF方式适合用于数据持久和实时备份等场景。 3. RDB的优点:RDB方式对于数据恢复速度较快,在大规模数据恢复时比AOF更高效。由于RDB是一个紧凑的二进制文件,相对于AOF文件来说更小,可以节省存储空间。此外,RDB方式对Redis的性能影响较小。 4. AOF的优点:AOF方式可以提供更高的数据安全性,因为它记录了每个写操作的历史,可以保证在Redis异常退出或宕机时不会丢失数据。AOF文件是一个文本文件,易于理解和修改。 总结来说,RDB方式适合于备份和灾难恢复,而AOF方式适合于数据持久和实时备份。在选择持久方式时,需要根据实际需求进行权衡和选择。另外,也可以同时使用RDBAOF两种方式,以提供更好的数据安全性和灾难恢复能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值