我们知道,Redis持久化机制有RDB快照持久化和只追加日志AOF持久化。AOF持久化可以实现数据的超高安全性,比RDB持久化更能保证数据的安全,达到不丢失1秒间的数据,但是随着Redis的不断运行,长期运作,日志文件会不断变大,甚至高达T级数据集,因此这就涉及到一个AOF重写机制:
AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数据库状态的时间增加;
为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文件所保存的数据库状态是相同的,但是新的AOF文件不会包含任何浪费空间的冗余命令,通常体积会较旧AOF文件小很多。
重写aof文件并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,替换原有的文件,这一点和快照有点相似。