目录
Redis支持RDB和AOF两种持久化机制。
RDB
(1)Redis的RDB持久化机制,其实是指在指定的时间间隔内将内存中数据集快照写入磁盘。实际上,就是fork一个子进程,先将数据集写入临时文件中,写入成功后,替换之前生成的文件,以二进制压缩的方式存储。
(2)RDB是Redis的默认持久化机制,其会在默认的目录下生成一个dump.rdb的文件,重启时会通过加载dump.rdb文件来恢复数据。
(3)RDB作为Redis默认的持久化机制,其分为手动和自动两种机制。
自动机制:Redis启动初始化一个定时函数,每隔一段时间执行一次bgsave,将内存中的数据dump到硬盘。
手动机制:save命令和bgsave命令两种。
save命令会阻塞当前Redis的主线程,直至持久化完成,在生产环境不建议使用;
bgsave命令会让Redis进程fork出一个子进程,子进程来进行数据的持久化,阻塞时间很短。
(4)RDB的优势:
一旦采用了RDB机制,Redis数据库只有一个文件dump.rdb,方便持久化;
容灾性好,方便备份存储,可以将rdb文件保存至其他安全的存储介质上;
当遇到大数据集时,Redis的RDB机制相比较AOP机制而言,其恢复速度更快;
保证了性能最大化,fork出一个子进程来进行持久化操作,主进程不会进行任何IO操作,从而保证了Redis的高性能。
(5)RDB的缺点:
数据安全性偏低,因为RDB机制是间隔一定时间进行持久化,若是持久化期间发生了故障,则会丢失数据,所以其适宜用于数据安全性要求不是很高的场合;
服务暂停,RDB机制是通过fork出一个子进程来执行数据的持久化的,所以当数据库比较大的时候,可能会造成服务停止几百毫秒。
AOF
(1)Redis的AOP持久化机制,是以日志的形式记录服务器所处理的每一个写操作。AOF采用日志的形式记录每一个写操作,并追加到文件中。Redis重启时,会根据日志文件的内容将写操作从前向后执行一遍,以完成数据的恢复。
(2)AOF:开启Redis的AOF持久化机制:appendonly yes,AOF文件名通过:appendfilename ‘appendonly.aof’设置,默认文件名即为appendonly.aof。
(3)AOF的优势:
数据安全性更高,AOF机制可以根据需要设置不同的fsync策略:比如:appendfsync no(无fsync)/appendfsync everysec(每秒钟一次fsync)/appendfsync always(每次执行写入命令时fsync)
(4)AOF的缺点
如果采用AOF机制,其文件会比dump.rdb文件大,恢复速度相比较慢,当数据集比较大时,其比RDB启动效率低;
根据不同的同步策略,AOF在运行效率上往往会慢于RDB机制。