浅谈 Redis 的两种数据持久化方案 RDB 和 AOF

码字不易,转载请注明出处!!


RDB(默认)

  1. 备份流程:RDB 的方式是定时从主进程 fork 出一个子进程,将子进程的数据写入到硬盘中的临时文件(即所谓的快照),写入完成后替换掉旧的数据文件,默认文件名为:dump.rdb;并且这个过程中主进程还是在继续接收客户端发送过来的数据;
  2. 触发条件:RDB 方式的的定时时间是可以设置的:
    • save 900 1 : 表示15分钟(900秒钟)内至少一个键被更改则进行快照
    • save 300 10 : 表示5分钟(300秒)内至少10个键被更改则进行快照
  3. 备份方式:RDB 模式下,我们可以通过备份 .rdb 文件对数据库进行备份,但是会丢失定时任务执行周期时间内的数据

AOF

  1. 启动方式:AOF 模式默认不是开启的,需要修改配置文件配置:appendonly yes
  2. 备份流程:AOF 模式是将对数据的操作(读操作除外)写入到一个文件中,下次启动时将文件内容读取出来,全部执行一遍,即可达到恢复数据的目的,默认文件名是:appendonly.aof;
  3. 触发条件:redis每次对数据进行操作都会写入到备份文件,但是可以配置:
    • appendfsync always:每次执行写入都会进行同步,这是最安全但是效率比较低的方式
    • appendfsync everysec:每一秒执行
    • appendfsync no:不主动进行同步操作,由系统去执行,这个是最快但是最不安全的方式
  4. 重写机制:
    • 原因:随着时间迁移,.aof 文件会越来越大,所以 AOF 模式下存在一个重写机制
    • 流程:
      • 对旧的.aof 文件拷贝一份,然后整理,只保留恢复当前数据需要的最小指令集,比如对一条数据重复删除、添加,则值需要保留最后的一条添加指令。
      • 备份整理的过程中,父进程继续响应客户端请求,并把数据放入缓冲区,一面这部分数据被替换后丢失。
      • 旧的 .aof 文件整理好后,会替换掉原有的 .aof 文件,并把缓冲区的数据写入替换后的 .aof 文件。
    • 触发条件:
      • auto-aof-rewrite-percentage 100:表示当前aof文件大小超过上一次文件大小的百分之多少的时候会进行重写,如果之前没有重写过,表示当前aof文件大小为准
      • auto-aof-rewriter-min-size 64mb:设置需要重写的最小 .aof 文件大小,也就是文件小于64mb的时候,不需要进行优化
  5. 备注:因为备份的.aof文件是指令的集合,因此是可以读懂的,可以拿来做分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值