RDB持久化功能详细
一、RDB持久化功能
RDB持久化功能可以将Redis中所有数据生成快照并以二进行文件的形式保存到硬盘里,文件名为.RDB文件
在Redis启动时载入RDB文件,Redis读取RDB文件内容,还原服务器原有的数据库数据
过程如下图所示:
Redis服务端创建RDB文件,有三种方式
-
使用
save
命令手动同步创建RDB文件 -
使用
bgsave
命令异步创建RDB文件 -
自动创建RDB文件
使用save
命令手动同步创建RDB文件
客户端向Redis服务端发送save
命令,服务端把当前所有的数据同步保存为一个RDB文件
使用bgsave
命令异步创建RDB文件
执行bgsave
命令也会创建一个新的RDB文件,且不会造成redis服务器阻塞: 在执行bgsave
命令时会执行fork操作创建子进程,
而RDB持久化过程由子进程负责,完成后自动结束,所以Redis服务端仍然可以正常的处理其它的命令请求
自动创建RDB文件
打开Redis的配置文件/etc/redis.conf
自动持久化配置解释:
-
save 900 1表示:如果距离上一次创建RDB文件已经过去的900秒时间内,Redis中的数据发生了1次改动,则自动执行BGSAVE命令
-
save 300 10表示:如果距离上一次创建RDB文件已经过去的300秒时间内,Redis中的数据发生了10次改动,则自动执行BGSAVE命令
-
save 60 10000表示:如果距离上一次创建RDB文件已经过去了60秒时间内,Redis中的数据发生了10000次改动,则自动执行BGSAVE命令
-
当三个条件中的任意一个条件被满足时,Redis就会自动执行BGSAVE命令
二、RDB 和 AOF 各自有什么优缺点 ?
RDB 优点
-
1、只有一个紧凑的二进制文件 dump.rdb ,非常适合备份、全量复制的场景
-
2、容灾性好,可以把RDB文件拷贝道远程机器或者文件系统张,用于容灾恢复
-
3、恢复速度快,RDB恢复数据的速度远远快于AOF的方式
RDB 缺点
-
1、实时性低,RDB 是间隔一段时间进行持久化,没法做到实时持久化/秒级持久化。如果在这一间隔事件发生故障,数据会丢失
-
2、存在兼容问题,Redis演进过程存在多个格式的RDB版本,存在老版本Redis无法兼容新版本RDB的问题