RDB
原理:全量备份,把内存数据以二进制的形式序列化
补充:
bgsave中,父进程对数据进行写操作时,会采用OS的COW机制对数据段页面分离,当父进程对其中一个页面进行修改时,会将被共享的页面复制一份分离出来,然后对这个复制的页面进行修改。目的是为了节省内存空间。
AOF
原理: AOF持久化以独立日志的方式记录每次写命令,解决了持久化的实时性问题。
混合持久化
《Redis深度历险》:重启Redis时,我们很少使用RDB来恢复内存,因为会丢失大量数据。我们通常使用AOF日志重放,但是重放AOF日志性能相对RDB来说慢很多,这样在Redis实例很大的时候,启动需要花费很长时间。
Redis4.0为了解决这个问题,带来了新的持久化策略-----混合持久化。
混合持久化:先加载RDB,再重放AOF,(这里的AOF不再是全量日志,而是自持久化开始到持久化结束这段时间发生的增量日志)。如果打开混合持久化,aofrewrite的时候就直接把rdb内容写到aof文件开头。重放时判断文件前5个字符是不是REDIS,是的话先加载RDB再加载AOF,否则直接加载AOF。