RDB
是Redis默认的持久化方式。按照配置周期性的把内存的数据以快照的形式保存到硬盘的二进制文件中,直接拿文件内容重建。不会占用太大的磁盘空间,性能较好,但是无法保证数据一致性,只能将数据恢复到上次保存快照的时候。
AOF
Redis会将每一个收到的写命令都以追加的方式添加到一个日志文件中。当Redis宕机重构时会按顺序执行日志文件中的命令来重构整个数据库。无法保证数据完全一致,但相比与RDB可以大幅提高数据一致性,缺点是追加的命令日志会越来越大,并且重构起来效率较低。
实际应用RDB+AOF
实际应用中,可以隔一段时间保存一次快照(RDB),直到下次保存快照前这一段时间内所有的写命令用AOF机制追加到命令日志中。重构的时候先恢复快照数据,然后执行该快照后的命令。这样做的可以将两个持久化机制的优点集于一身,保证性能的同时提高数据一致性。