一.RDB
RDB做镜像全量持久化,将redis所有的数据以二进制保存,RDB会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据。他是隔一段时间开启子线程,持久化这段时间的数据。
1.优点
- 使用二进制,文件比较小
- 灾难恢复时因为文件小恢复更快
- 重启更快
- 因为是fork一个子线程进行持久化,所有对效率影响很小。
2.缺点
- 容易丢失某一段时间的数据
- 在开始子线程时 耗时会造成卡顿
二.AOF
增量持久化,保存当前一秒或者当条指令,以文本保存。
1.优点
可以实现1s一次写入 ,最多丢失1s数据。
2.缺点
文件比较大
三.混合方式
先用RDB写入开头,然后在使用AOF写入后续操作。这样结合了两种方式的优点。
AOF需要redis-server.exe redis.windows.conf 启动才生效。
总结:RDB需要AOF来配合使用,在redis实例重启时,会使用RDB持久化文件重新构建内存,再使用AOF重放近期的操作指令来实现完整恢复重启之前的状态。AOF持久化开启且存在AOF文件时,优先加载AOF文件;AOF关闭或者AOF文件不存在时,加载RDB文件;加载AOF/RDB文件城后,Redis启动成功; AOF/RDB文件存在错误时,Redis启动失败并打印错误信息