Redis持久化,RDB和AOF是什么?

一、RDB是什么?

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。

触发机制:手动触发分别对应为save和bgsave命令

save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较多的实例会造成时间阻塞。线上环境不建议使用。

bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一段时间很短。

bgsave命令是针对save阻塞问题做的优化。因此Redis内部所有涉及到RDB操作都采用bgsave的方式,而save命令可以废弃。

RDB的优缺点:

RDB的优点:

RDB是一个紧凑压缩的二进制文件,代表Redis在某一个时间点上的数据快照。非常适用于备份,全量复制等场景。比如每6小时执行bgsave备份,并把RDB文件拷贝到远程机器或者文件系统中,用于灾难恢复。

Redis加载RDB恢复数据远远快于AOF方式。

RDB的缺点:

RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运行都有执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。

RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题。

二、AOF是什么

AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流

你可能感兴趣的:(Redis持久化,RDB和AOF是什么?)