数据库持久 项目重启_Redis持久化到磁盘的方式RDB和AOF

1,背景

最近出去面试,有谈到项目中使用redis做缓冲,业务之间可以读redis做数据共享。redis定位是内存数据库,如果没有持久化方案,内存断电重启数据会丢失,所以redis要开启持久化功能,将数据保存在磁盘上,重启后从磁盘读取数据恢复到内存。redis持久化方案提供了两种模式,就是RDB模式(把redis的内存数据库定时创建快照dump到磁盘上),AOF(将redis操作日志追加到文件),这两种方案的场景分别是什么呢?

2,区别

RDB方案是全量复制数据到磁盘,也就是数据快照,操作进程是专门fork出子进程去将数据写入临时文件完成后替换之前的RDB文件,数据的格式二进制压缩存储。save 3600 1000 表示前一次快照3600秒后,当有超过1000个key被改动的时候就进行一次快照更新

5769c6cf07c45fe16be37c5a2f6f93bf.png

AOF持久化的不是数据,而是操作命令,增删改数据的操作,以文本的格式记录,可以看到详细的命令记录,appendonly no

e642d230a01455d241127a8f2b654ea4.png

3,分析场景

RDB的方式是对数据备份到一个二进制压缩的数据文件,数据恢复快,占用空间小,虽然fork出一个子进程去生成快照但是没来及备份crash还是会造成数据丢失,全量复制事件比较长,AOF提供everysec每秒同步,always每次修改同步方案,可以最大限度的减少crash造成的数据丢失,AOF文件太大还会触发rewrite机制重写AOF文件压缩一些命令

对数据恢复而言AOF文件比RDB文件慢,同步策略上AOF的秒同步的使用场景效率高,选择上看是否愿意牺牲部分性能去获取更高的缓存一致性,一般更多的采取两种的结合,就是两种模式都开启。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值