一、问题描述
Redis往往用作缓存,把服务端的数据从数据库中保存到内存中,然后直接从内存中读取,响应速度会非常快。但是一旦服务器宕机,内存中的数据会全部丢失。需要有一种机制能够回复丢失的数据。Redis的持久化有两大机制:AOF日志和RDB快照。
二、AOF日志
属于写后日志,即先执行完Redis命令,将数据写入内存;然后记录日志,写入磁盘。
优势:
1、写AOF不会阻塞Redis命令的执行;
2、因为Redis没有其他数据库的语法语义分析功能,只有执行的时候才能判断是否成功或失败(避免开销)。AOF的写后日志机制,能够保证AOF记录的都是执行成功的Redis命令。
劣势:
1、如果一个Redis命令执行成功,日志还没来得及记录就宕机了,那这个命令和相应的数据就有丢失的风险(把Redis直接当数据库用)
2、AOF避免了对当前命令的阻塞,但是如果AOF的写回策略是Always的话