redis中RDB和AOF的工作原理

  |   0 评论   |   0 浏览

上一讲给大家介绍了持久化的作用,今天给大家介绍下RDB和AOF的工作原理。

1、RDB和AOF两种持久化机制的介绍
RDB:每隔几分钟或几小时,生成一份redis内存中的所有数据快照;
image.png

这个时间间隔可以通过配置文件进行配置

AOF:记录每次写操作,把这些写操作追加到AOF文件中,AOF文件只存在一个;
redisAOFpng

AOF的rewrite操作解析:
redisAOFrewritepng

如果同时开启了RDB和AOF,那redis会优先加载AOF里面的数据,因为AOF里面的数据更完整。

2、RDB持久化机制的优点
(1)、因为定期备份完整数据,所以适合做冷备;
(2)、保证redis的性能是最高的;
(3)、基于RDB恢复redis会比较快;

3、RDB的缺点
(1)、数据会丢失比较多;
(2)、RDB每次在fork子进程来执行RDB快照数据文件生成的时候,如果数据文件比较大,服务会有短暂的停顿,数毫秒到数秒

4、AOF的优点
(1)、可以尽可能保证数据不丢失;最多丢失1秒的数据
(2)、文件以append-only模式写入文件,没有磁盘寻址的开销,写入性能非常高,文件不容易损坏,即使损坏了也很容易修复;
(3)、rewrite操作不影响性能;
(4)、AOF的命令是人类可读的,适合做灾难性的误删除的紧急恢复;

5、AOF的缺点
(1)、AOF文件比RDB文件更大;
(2)、写的QPS会比RDB慢一些;每秒执行一次fsync,性能还是很高的,如果想要数据一条都不丢失,配置为每写入一条数据,就执行fsync,那性能就大降;
(3)、做数据恢复比较慢,做冷备不太方便,需要自己用脚本来实现;
(4)、比较复杂、不够健壮;

6、RDB和AOF如何选择?
redis是支持两个同时开启的,这里建议同时开启RDB和AOF。

关注公众号,更快获取文章
qrcode_for_gh_685e3b222002_3441jpg

本文为博主原创文章,未经博主允许不得转载。