什么是AOF
AOF:Append Only File(仅在文件中追加),是Redis的一种数据持久化机制
注:Redis中默认关闭AOF,需手动修改配置文件(将no修改为yes以开启AOF)
如何触发AOF
Redis中提供了三种AOF同步方案:
always:接收到写命令时进行aof同步 everysec:间隔一秒进行aof同步 no:不进行aof同步,等待操作系统的自动同步(Linux系统默认间隔30S进行一次同步)
AOF机制讲解
AOF机制简述:
Redis会将接收到的写命令追加到aof文件中,当Redis重启时,会根据aof文件进行数据还原
数据还原步骤:
1.Redis创建伪客户端(Fake Client)以执行命令(Redis 的命令只能在客户端上下文中执行)
注:伪客户端无网络连接,也无需网络连接,因为伪客户端执行的命令均直接来自于aof文件
2.从aof文件中读取一条写命令
3.使用伪客户端执行该命令
4.重复步骤2与3,直至aof文件中的所有写命令均被读取
完成上述步骤后,aof文件中记录的数据就被完整地还原了
AOF重写
Redis通过创建子进程进行AOF重写,子进程与主进程共享物理内存数据(旧aof文件);此举可让主进程继续处理客户端的请求
AOF的优缺点
优势:
- 数据相对安全
- 节省内存(AOF默认一秒同步一次,所以内存数据相较RDB小)
- fork子进程时客户端的请求将被阻塞,但阻塞时间极短(复制物理内存地址)
劣势:
- 较为消耗物理内存
- 不适合大规模的数据恢复(若数据量大,启动Redis时需要耗费大量时间执行命令,以进行数据恢复)