RDB存储的弊端
- 存储数据量较大,效率较低——基于快照思想,每次读写都是全部数据,当数据量巨大时,效率非常低
- 大数据量下的IO性能较低
- 基于fork创建子进程,内存产生额外消耗
- 宕机带来的数据丢失风险
解决思路
- 不写全数据,仅记录部分数据
- 改记录数据未记录操作过程
- 对所有操作均进行记录,排除丢失数据的风险
- 这也就是AOF的引入
AOF概念
- AOF持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单描述为改记录数据产生的过程
- AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
AOF写数据过程
AOF写数据三种策略
- always(每次)
每次写入操作均同步到AOF文件中,数据零误差,性能较低 - everysec(每秒)
每秒将缓冲区中的指令同步到AOF文件中,数据准确性高,性能较高
再系统突然当即的情况下丢失1秒内的数据 - no(系统控制)
由操作系统每次同步到AOF文件的周期,整体过程