redis的持久化有两种形式,分别叫RDB(redis database)和AOF(append only file)。默认情况下,RDB是打开的,AOF是关闭的。
RDB持久化的方式是,每隔一段时间,系统启动另外一个进程,复制当前redis的进程,两个进程的数据一模一样。然后新启动的
进程把redis数据备份出来,写入一个rdb文件。
AOF持久化的方式是,以日志的形式,记录redis的每次修改操作(读取数据不记录),记录到aof文件,需要恢复数据时,按顺序执行即可。
当aof文件过大时(有配置项),系统会选择重写aof文件。重写的方式是把当前的redis数据按照set的方式写入备份文件,从而缩小aof备份文件。
两种方式的优缺点:
RDB是异步的,不影响redis的正常工作,而且数据恢复速度快。但是复制一个进程需要浪费很大的资源,如果频繁的进行RDB,
影响系统性能,而且当一次备份以后,系统断电,备份完成到断电这段时间的数据丢失。
AOF可以设置每秒记录一次新增的redis操作,甚至可以每次redis的修改操作都可以记录,断电也不会丢失数据。缺点也很明显,AOF是同步操作,
记录数据时,redis处于阻塞状态,重写aof文件时,更是要耗费大量的时间。