Redis基础(6)-redis的持久化RDB与AOF

文章目录

1. RDB

RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话里面的Snapshot快照,它恢复时是将快照文件直接读入内存;
Redis的备份:会单独创建一个(fork)子进程来进行持久化,会先将数据写入到一个临时文件,待到持久化过程都结束了,再用这个临时文件替换掉上次持久化好的文件。整个过程,主进程不进行任何的IO操作,以保证在进行数据恢复时拥有极高的性能,当然对于数据恢复的完整性不是非常敏感,RDB的方式要比AOF的方式更加的高效;RDB缺点是最后一次的持久化可能会导致数据的消失;

一般文件存在dump.rdb中;配置文件中是这样写的./存在于当前目录(在哪里打开了redis就把目录设置在哪里);想要修改的话可以直接修改dir目录;

  1. save 时间(秒) 次数:在多少秒之内完成多少次的数据库修改就会进行一次存储;

rdb存储的是数据(节省磁盘,恢复数据快,缺点:使用写时拷贝技术,但是数据庞大时比较消耗性能,在一次间隔的时候做一次备份,如果意外宕机,就会丢失最后一次的数据修改;),而AOP存储的是指令;

fork子进程,一般被exec系统调用,在Linux中含有"写时复制技术",一般的情况,父进程和子进程会共用一段物理内存,当进程空间各段内容要发生变化时才会将父进程的内容复制一份给子进程;写时复制:是指需要写的时候才复制,而并非边写边复制;

2. AOF

AOF:以日志的形式记录每一个写操作,将redis执行过的所有写指令全部记录下来(读操作不记录,也就是只记录所有修改数据库的操作);默认处于关闭状态appendonly,而存储AOF的文件名默认是appendfilename: appendonly.aof
AOF文件的保存路径与RDB的路径是一致的;

上图就是在redis.conf中的AOF存储是否开启和文件存储的位置,当然上面是我已经修改了的,默认的自然没有怎这么详细;
如下图插入所示:

本来是没有数据的,但是set一个数据后在查看就有数据了(在RDB中有数据的前提是必须正常关闭redis,或者说达到redis持久化的次数,即之前save中的规定数;但是在AOF文件里面一般是始终同步的将redis的所有写入记录,当然也可以每秒同步,不过这样一旦redis宕机,就可能会丢失那一秒存储的数据);

在redis关于AOF文件的同步策略就像上图一样,第一个总是同步,第二个每一次同步,第三个表示从不同步;

AOF文件进行重写的条件,下图就是默认的重写条件;

基本大小要是当前默认值(64mb);
优点:
丢失数据的概率更加的低;
可读的日志文件,操作AOF更加的稳健,可以处理误操作;
缺点:
占用的磁盘空间比RDB更加多;
恢复数据更加慢(因为是通过执行指令恢复);
读写同步,性能压力更大;
存在个别的bug导致恢复失败;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘的天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值