您的位置:首页 > 数据库 > Redis

redis持久化

2016-10-05 12:10 176 查看
RDB持久化可以在指定的时间间隔内生成数据集的时间点快照

AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重写执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。Redis还可以在后台对AOF文件进行重写,使得AOF文件的体积不会超出保存数据集状态所需的实际大小。Redis还可以同时使用AOF持久化和RDB持久化。

RDB优点:

保存了Redis在某个时间点上的数据集。RDB文件适合用于进行备份:比如在最近的24小时内,每小时备份一次RDB文件,并且在每个月的每一天,也备份一个RDB文件。RDB非常适用于灾难恢复:它只有一个文件,并且内容都非常紧凑,可以将它传送到别的数据中心。RDB可以最大化Redis的性能:父进程在保存RDB文件时唯一要做的就是fork出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘I/O操作。RDB在恢复大数据集时的速度比AOF的恢复速度要快

RDB缺点:

虽然Redis允许设置不同的保存点来控制保存RDB文件的频率,但是,因为RDB文件需要保存整个数据集的状态,所以它并不是一个轻松的操作。因此你可能会至少5分钟才保存一次RDB文件。在这种情况下,一旦发生故障停机,你就可能会丢失好几分钟的数据。每次保存RDB的时候,Redis都要fork出一个子进程,并由子进程来进行实际的持久化工作。在数据集比较庞大时,fork可能会非常耗时,造成服务器在某毫秒内停止处理客户端。

AOF优点:

可以设置不同的fsync策略,比如无fsync,每秒钟一次fsync,或每次执行写入命令时fsync。AOF默认策略为每秒fsync一次,就算发生故障停机,也最多只会丢失一秒钟的数据(fsync会在后台线程执行,所以主线程可以继续处理命令请求);

AOP文件是一个只进行追加操作的日志文件,因此对AOF文件的写入不需要进行seek;

Redis可以在AOF文件体积变得过大时,自动在后台对AOF进行重写:重写后的新AOF文件包含了恢复当前数据集所需的最小命令集合。整个重写操作是绝对安全的,因为redis在创建新AOF文件的过程中,会继续将命令追加到现有的AOF文件里面,即使重写过程中发生停机,现有的AOF文件也不会丢失。而一旦新AOF文件创建完毕,Redis就会从AOF文件切换到新AOF文件,并开始对新AOF文件进行追加操作;

AOF文件有序地保存了对数据库执行的所有写入操作,这些写入操作以Redis协议的格式保存

AOF缺点:

相同的数据集,AOF文件的体积通常要大于RDB文件;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: