小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
了解了 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可以加入技术交流群参与讨论呦!