rdb:快照模式持久化,在redis主进程外,另外增加一个子进程用于rdb的工作,让主进程的工作不受影响。rdb工作原理:每隔n分钟或n次写操作后,从内存中dump数据到硬盘中,压缩后,放在备份目录。优点:当数据恢复时,速度较快,直接从备份文件拉到内存即可。缺点:在两个dump操作之间,如果有数据更改,当机器宕机时,会造成数据丢失。redis.conf配置文件默认时打开的,具体条件保存条件可以更改。
aof:日志追加模式持久化,内存中进行写入操作时,相应的操作指令追加到备份文件中,具体触发条件可以在redis.conf文件中更改,一般设为一秒一次(redis默认时不开启aof模式)。为了解决不断写入指令到备份文件导致的文件过大问题,aof模式会在一定条件在备份文件中进行aof逆写,即同一个key只保留一条指令。优点:能保证数据完整性。缺点:数据恢复过程较缓慢。
注意,当同时开启rdb和aof两种模式时,数据恢复选择的时aof模式。两种模式都是在同一个子进程中进行,当rdb开始dump数据时,aof模式会阻塞,但这期间写入的指令会放在一个队列中,后续再从这个队列中写入备份文件。