请知悉:本文最近一次更新为 3年 前,文中内容可能已经过时。

先说个基础概念:CAP,即一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。

Redis的这两种持久化模式呢,区别其实就是你是要高可用(AP),还是高一致性(CP)的问题。


RDB持久化:原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化。

AOF持久化:原理是将Reids的操作日志以追加的方式写入文件。

区别在哪儿呢?

RDB模式的原理说明中,你应该留意到关键点在定时二字上,如此自然就能想到,这个定时还没执行的时候,系统挂了,那这部分没有dump的数据就丢了,由此,高可用是保证了,但数据一致性的问题会在极端情况下出现问题。

AOF模式呢,熟悉MySQL的话,你就应该能推断,这操作日志类似binlog,这意味着,增删改的操作都会记录在案,这模式以降低性能的方式,确保数据不丢,保证了高一致性。


呐,核心区别总结完了,我们说说两个模式的优势吧:

  • RDB模式

    持久文件只有一个,而且呢,基本上你可以把这个文件当做内存的映射,所以这模式Redis启动的速度快(重启服务数据载入恢复也快),负载性能高。

  • AOF模式

    这模式有3种同步策略:每秒同步、每次修改同步和不同步。

    同步都是以异步方式进行的,效率很高。区别在于,每秒同步,和RDB模式一样,这一秒挂了,会丢一秒的数据。而每次修改同步呢,则可以视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。这种方式在效率上自然会是最低的。

根据场景不同,实际生产环境选择哪种模式,或者多模式集群混用,都是可以的。


参考资料

redis的持久化方式RDB和AOF的区别


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《Redis的RDB和AOF的区别》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌