rdb文件是否可以和aof文件共存?
可以
rdb文件和aof文件,先读取哪一个?
先读取aof文件,在读取rdb文件
如何选择?
1.如果只做缓存,那么可以不开启任何的持久化
2.考虑做持久化数据,建议开启两种持久化数据方式
为什么?
首先redis启动先读取aof文件,因为aof文件比rdb文件完整
rdb可以做一个备份的数据库
性能建议
因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。
如果Enalbe AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。
如果不Enable AOF ,仅靠Master-Slave Replication 实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。新浪微博就选用了这种架构
参考资料:尚硅谷周阳redis讲解
本文若有错误请指正,互相学习,加油!