1.什么是RDB和AOF?
RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
AOF持久化方式记录每次对服务器写的操作,当服务器重启时会重新执行这些命令来恢复原始数据,
注意:只做缓存的时候可以不做任何持久化
同时开启两种持久化方式时
当redis重启时会优先载入AOF文件来恢复原始数据
2.二者优缺点
RDB优势
1). 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。
2). 对于灾难恢复而言,RDB是非常不错的选择。
3). 性能最大化。
4). 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。
RDB劣势
1). 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。
2). 当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。
AOF的优势
1). 该机制可以带来更高的数据安全性,即数据持久性。
2). 然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。
3). 如果日志过大,Redis可以自动启用rewrite机制。
4). AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。
AOF的劣势
1). 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
2). 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。
3.二者选择的标准
就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),
还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。
4.参考资料
http://blog.youkuaiyun.com/jackpk/article/details/30073097