先说个基础概念:CAP,即一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。
Redis的这两种持久化模式呢,区别其实就是你是要高可用(AP),还是高一致性(CP)的问题。
RDB持久化:原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化。
AOF持久化:原理是将Reids的操作日志以追加的方式写入文件。
区别在哪儿呢?
RDB模式的原理说明中,你应该留意到关键点在定时二字上,如此自然就能想到,这个定时还没执行的时候,系统挂了,那这部分没有dump的数据就丢了,由此,高可用是保证了,但数据一致性的问题会在极端情况下出现问题。
AOF模式呢,熟悉MySQL的话,你就应该能推断,这操作日志类似binlog,这意味着,增删改的操作都会记录在案,这模式以降低性能的方式,确保数据不丢,保证了高一致性。
呐,核心区别总结完了,我们说说两个模式的优势吧:
-
RDB模式
持久文件只有一个,而且呢,基本上你可以把这个文件当做内存的映射,所以这模式Redis启动的速度快(重启服务数据载入恢复也快),负载性能高。
-
AOF模式
这模式有3种同步策略:每秒同步、每次修改同步和不同步。
同步都是以异步方式进行的,效率很高。区别在于,每秒同步,和RDB模式一样,这一秒挂了,会丢一秒的数据。而每次修改同步呢,则可以视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。这种方式在效率上自然会是最低的。
根据场景不同,实际生产环境选择哪种模式,或者多模式集群混用,都是可以的。
参考资料
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。