Redis持久化:RDB和AOF机制
RDB:在指定时间间隔内将内存中的数据集快照写入磁盘,实际操作是fork一个子进程,先将数据集写入临时文件,写入成功后,在替换之前的文件,再用二进制压缩。
RDB优点:整个Redis数据库中只包含一个dump.rdb文件,方便持久化
容灾性好,方便备份
性能最大化,fork一个子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能
相对于数据集较大时,比AOF的启动效率高
RDB 缺点:数据安全性低,RDB是间隔一段时间进行持久化,如果持久化之间Redis发生故障,会发生数据丢失,所以RDB更适合数据要求不严谨的情况
由于RDB是fork子进程来协助完成数据持久化工作的,因此数据集较大的时候可能会导致整个服务器停止服务几百毫秒甚至一秒
AOF:以日志的形式记录服务器的每个写、删操作,查操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
AOF优点:数据安全,AOF持久化记录了每个写操作的历史记录,可以确保数据不会因为意外断电或系统崩溃而丢失。在发生故障时,可以通过重新执行AOF文件中的写操作来恢复数据
通过append模式写文件,即使中途服务器宕机也不会破坏已经存在的内容,可以通过redis-check-aof来解决数据库一致性问题
AOF机制的rewrite模式,定期对AOF文件进行重写,以达到压缩目的
AOF缺点:AOF文件比RDB文件大,且恢复速度慢
数据集大时,比RDB启动效率慢
运行效率没有RDB高