Redis的RDB和AOF持久化

RDB 持久化:在指定的时间间隔内生成数据集的时间点快照。

AOF 持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。

  RDB 它只保存了 Redis 在某个时间点上的数据集,是一个非常紧凑的文件,因此非常适合用于进行备份,恢复大数据集时的速度也非常快。在保存 RDB 文件时父进程fork出一个子进程执行保存工作,父进程无须执行任何磁盘 I/O 操作,可以最大化Redis的性能。

  RDB 因为是每隔一段时间进行保存,所以,一旦发生故障停机, 就可能会丢失好一段时间的数据。而且每次保存时,Redis都要fork出一个子进程来进行实际的持久化工作,在数据集比较庞大时,fork可能会非常耗时,造成服务器在某某毫秒甚至一秒内停止处理客户端。

  AOF 会有序地对数据库执行的所有写入操作,并以追加的方式和 Redis 协议格式来保存成日志文件, 因此 AOF 文件的内容容易被人读懂, 可以很轻松地对文件进行分析,同时导出文件也很简单,也不会出现丢失某段时间的数据的情况。当 AOF 文件体积变得过大时,会自动地在后台对 AOF 进行重写,重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。

  AOF因为是不断的追加保存命令,所以文件体积往往比较大,恢复数据时需执行所有命令,速度也会比RDB慢。极小可能会因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。

  

posted @ 2018-07-20 09:42  傲娇的草履虫  阅读(141)  评论(0编辑  收藏  举报