测试环境:
windows
RDB的触发机制
save bgsave flushall 自动触发(配置文件配置)
save命令触发:
触发方式 :首先手动删除dump.rdb文件。
当执行save命令时,自动生成dump.rdb文建测试成功
bgsave命令触发:
触发方式:手动删除dump.rdb文件
当执行bgsave命令时,自动生成dump.rdb文建测试成功
操作分析:执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程是Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。bgsave命令也是Redis内部RDB操作的默认方式。
flushall命令触发
触发方式:手动删除dump.rdb文件,然后使flushall命令触发。
当执行flushall命令时,自动生成dump.rdb文建测试成功
save和bgsave
方式 | save指令 | bgsave指令 |
---|---|---|
读写 | 同步 | 异步 |
阻塞客户端指令 | 是 | 否 |
额外内存消耗 | 否 | 是 |
启动新进程 | 否 | 是 |
恢复rdb文件
首先删除dump,rdb文件
删除key
恢复dump.rdb中的数据
windows环境下直接启动redis-server.exe即可(linux环境要放到bin目录下),测试成功
RDB持久化的优缺点
缺点:
服务器宕机时最后一次修改的数据会丢失
持久化时会fork一个子进程,会占用一定的内存空间
优点:
适合大规模的数据恢复!
对数据的完整性要求不高!
RDB持久化总结:
RDB是redis默认的持久化方式。
RDB持久化触发方式有save(不常用) 、bgsave、 flushall、配置文件配置的save [time] [operationChange](测试未生效) 。
RDB持久化过程
指在指定的时间间隔内将redis内存中的数据集快照写入磁盘,实现原理是redis服务在指定的时间间隔内先fork一个子进程,由子进程将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储,生成dump.rdb文件存放在磁盘中。