RDB持久化 vs AOF持久化

之前的文章中说明了Redis中的RDB持久化方式与AOF 持久化方式,本文主要对比说明两种持久化方式的优缺点以及应用场景。

I、RDB的优点

1、RDB文件是一个非常紧凑的文件,保存了Redis在某个时间点上的数据集。这种文件非常适合备份

例如,可以在每小时备份一次RDB文件。这样的话,即使遇到问题,也可以将数据集恢复到不同的版本。

2、 RDB非常适用于灾难性恢复:它只有一个文件,并且内容非常紧凑,可以在加密后传送到别的数据中心。

3、RDB在恢复大数据集的时候比AOF速度快,因为AOF需要伪客户端去执行命令。

II、RDB的缺点

1、 RDB没法满足在服务器故障时不丢失数据
例如通过save设置每五分钟进行一次持久化,因为RDB每次都需要保存整个数据集状态,这并不是一个轻松的操作,因此可能会丢失几分钟的数据。

2、在数据集非常庞大时,RDB以fork子进程方式可能会非常耗时,在CPU很紧张的情况下,这种操作可能会停止以秒为单位的时间。

III、AOF的优点

1、AOF持久化会让Redis非常耐久。通过设置不同的同步策略,如每秒钟一次,这时就算发生故障停机,也最多只丢失一秒钟的数据。

2、 AOF持久化完成的是对指令集的增加操作,相对于RDB的每次都拷贝整个数据集更加省时安全。

3、AOF可以在文件体积过大时,在后台完成重写,并且这种重写由于AOF重写缓冲区的存在是安全的。

4、AOF是以可读性很好的协议格式保存的,举个例子,如果你不小心执行了flushall命令,将整个数据库删除,这时,你只需要移除AOF文件末尾的flushall命令,重新启动Redis,就可以将数据集恢复到删除之前的状态。

IV、AOF的缺点

1、 AOF的文件体积通常大于RDB文件。

2、对于相对大的数据集,使用AOF恢复数据时的速率会比RDB慢(因为AOF要使用伪客户端完成命令的执行);

V、RDB与AOF总结

1、要想达到媲美PostgreSQL的数据安全性,应该同时使用两种持久化方式

2、RDB文件被用于集群复制中。

【参考】
RDB 和AOF持久化对比

欢迎转载,转载请注明出处wenmingxing RDB持久化 vs AOF持久化

你可能感兴趣的:(RDB持久化 vs AOF持久化)