1,用哪个好
官方推荐两个都启用
如果数据不敏感,可单独使用RDB
但不建议单独使用AOF,因为可能会出现BUG
如果只是做纯内存缓存,可以两个都不用
2,官方建议
1)RDB持久化方式能够在指定的时间间隔能对你的数据进行快照储存
2)AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行只写命令来恢复原始的数据,
AOF命令以及Redis 协议追加保存每次写的操作到文件末尾
3)Redis 还能对 AOF 文件进行后台重写,使得 AOF 文件的体积不至于过大
4)只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式
5)同时开启两种持久化方式
在这种情况下,当 redis 重启的时候会优先载入aof 文件来恢复数据,因为在通常情况下,AOF文件保存的数据集要比 RDB文件保存的数据集要完整
6)RDB的数据集不实时,同时使用两者时服务器重启也只会找 AOF 文件,那要不要只使用 AOF 呢?
建议不要,因为 RDB 更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有 AOF 可能潜在的bug,留着作为一个以防万一
7)性能建议
因为 RDB 文件只用作后备用途,建议只在 Slave 上持久化 RDB 文件,而且只要15分钟备份一次就好了,只保留 save 900 1 这条规则
如果使用 AOF ,好处是在最恶劣的情况下,也只会丢失不超过2秒的数据,启动脚本较简单只load自己的 AOF 文件就可以了。
代价,一是带来了持续的I/O ,二是 AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的
只要硬盘许可,应该尽量减少 AOF rewrite 的频率,AOF 重写默认的基础大小是 64M ,太小了,可以设置在 5g 以上
默认操作原大小100%重写的规则可以改到适当的大小