Redis系列之持久化机制RDB/AOF

本文介绍了Redis的两种持久化方式:RDB和AOF。RDB通过数据集快照实现,文件简单,恢复速度快,但数据安全性较低。AOF记录所有命令,提供更好的数据安全性和一致性,但文件体积大,恢复速度慢。AOF还支持rewrite机制,优化文件大小。在选择持久化策略时,需要根据对数据安全性和性能的需求来平衡。
摘要由CSDN通过智能技术生成

RDB

介绍

RDB,全程Redis DataBase,这种持久化方式是指数据集快照的方式实现半持久化,在某个时间点将数据写入一个临时文件,记录redis数据库的所有键值对信息,持久化结束之后,用这个临时文件替代上次持久化的文件,达到数据恢复的效果

优点

1、持久化的文件是dump.rdb,只有这一个文件,方便持久化

2、容灾性较好,一个文件可以保存到安全的磁盘上

3、性能好,在rdb对数据做持久化时,是启用一个fork子进程来完成写操作,让主进程处理请求的命令,所以IO的操作大多数在fork子进程那里来完成,主进程不会进行IO操作,从而保证了redis的读写高性能

4、在大量数据下,比AOP的启动效率要高 

缺点

1、数据安全性较低,因为RDB持久化机制是间隔一段时间才会进行,如果这段时间之内,redis发生故障就会导致数据丢失,所以使用RDB一般是用于某个场景下数据不严谨或者不是特别重要的时候 

个人补充

其实有兴趣的童鞋可以打开RDB文件就可以发现,文件里面记录的都是进制乱码,乍一看确实看不懂,但是有些信息我们是可以看得懂的也是能看得到的,大家仔细观察,其实能够发现,rdb文件中会存在我们set进去的key和value,比如我执行一个命令:set name caobing,那rdb文件中就会存在一个name和一个caobing,所以在恢复数据的时候,它是相当于直接把key和value全部一次性加载到内存上,这样的速度会很快,说到这里,其实就可以把rdb文件当做是一张表,记录了各种key和value,如图

 


AOF

介绍

AOF,全程Append-only file, 它的实现方式是把所有执行的命令记录到aof文件中,可以理解为我们开发系统中的一个操作日志,把我们执行的命令全部记录了下来,保存在aof文件中

优点 

1、数据安全性较好,aof持久化提供了一个appendfsync的属性,其中有个always选项,这个选项就是会把每一次命令都记录到aof中

2、通过append模式进行写操作,即使中途redis宕机了,也可以通过redis-check-aof工具解决数据一致性的问题

3、AOF提供了rewrite机制,只会记录最终的命令,比如:我第一次set name zhangsan,第二次对name赋值lisi,第三次赋值wangwu,rewrite启动之后,我只会记录wangwu,如果不开启,那aof会把zhangsan、lisi、wangwu都记录在aof文件中,这样的话就对文件大小的空和写操作的性能有一定的提升 

缺点 

1、AOF文件比RDB文件要大,相对恢复速度慢,毕竟aof恢复数据相当于把我们执行的命令再执行一遍,rdb是直接恢复数据,所以相对比较慢

2、数据量大的时候,启动效率会比rdb要低,同1中讲到的一样,它要一个一个执行命令 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值