你说你精通Redis,你看过持久化的配置吗?(五)

130 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

了解了 AOF 的日志重写原理,我们来简单总结下 AOF 的优缺点以及以后我们该选择哪种持久化方式来应用于我们的项目。

AOF的优缺点

优点

  • 数据的完整性和一致性更高,AOF的持久化通过使用不同的策略,最多丢失1秒的数据;
  • AOF文件是一个只进行追加的日志文件,不需要写入seek
  • Redis可以在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写,重写操作是绝对安全的;
  • AOF文件记录的写入操作以Redis协议的格式保存,容易读懂,容易对文件进行分析;

缺点

  • 对于相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积;
  • 根据所使用的 fsync 策略,AOF的速度可能会慢于RDB

在一般情况下,每秒 fsync 的性能依然非常高,而关闭 fsync 可以让 AOF 的速度和 RDB 一样快, 即使在高负荷之下也是如此。 不过在处理巨大的写入载入时,RDB 可以提供更有保证的最大延迟时间(latency)。

如何选择使用哪种持久化方式?

一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性,应该同时使用两种持久化功能。

如果非常关心数据,但仍然可以承受数分钟以内的数据丢失,那么可以只使用 RDB 持久化。

由于AOF持久化的实时性更好,即当进程意外退出时丢失的数据更少,因此AOF是目前主流的持久化方式。

有很多用户都只使用AOF持久化,但我们并不推荐这种方式:因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份,并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快。

说到这你以为就结束了吗?下文我们对持久化的相关知识做个“了结”。如果你有不同的意见或者更好的idea,欢迎联系阿Q,添加阿Q可以加入技术交流群参与讨论呦!