文章目录

  • 一、初识RDB
  • 二、RDB特点
  • 1、优势
  • 2、劣势
  • 三、RDB操作
  • 1、概述
  • 2、操作
  • 四、总结


一、初识RDB

RDB 全称(Redis DataBase
在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照它恢复数据时是将快照文件直接读到内存里

官网介绍:

redis分析rdb文件工具 redis rdb 分析_redis

流程图

redis分析rdb文件工具 redis rdb 分析_redis分析rdb文件工具_02


看不懂这图的话,继续往下看文章,看完文章后再回来!

二、RDB特点

1、优势

  • 适合大规模的数据恢复
  • 数据完整性和一致性要求不高更适合使用
  • 节省磁盘空间
  • 恢复速度快

2、劣势

  • Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性(内存)需要考虑
  • 虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能
  • 在备份周期在一定间隔时间做一次备份,所以如果Redis意外(宕机)down掉的话,就会 丢失最后一次快照后的所有修改

三、RDB操作

1、概述

Redis会单独创建 (fork) 一个子进程来进行持久化
会先将数据写入到一个临时文件中,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

Fork

  • Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
  • 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了“写时复制技术
  • 一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。

持久化流程

redis分析rdb文件工具 redis rdb 分析_数据库_03

dump.rdb文件

redis分析rdb文件工具 redis rdb 分析_redis分析rdb文件工具_04


在redis.conf中配置文件名称,默认为dump.rdb

配置位置

redis分析rdb文件工具 redis rdb 分析_子进程_05


rdb文件的保存路径,也可以修改。默认为Redis启动时命令行所在的目录下

2、操作

1)配置快照配置

redis分析rdb文件工具 redis rdb 分析_数据库_06


2)数据库存值

redis分析rdb文件工具 redis rdb 分析_子进程_07

3)复制一份临时RDB

可以想象成游戏存档

redis分析rdb文件工具 redis rdb 分析_redis分析rdb文件工具_08


4)清除数据库

可以想象成玩游戏时停电了

执行flushall命令,会产生dump.rdb文件

redis分析rdb文件工具 redis rdb 分析_子进程_09


5)把临时RDB复制到dump.rdb中

可以想象成游戏读档!

redis分析rdb文件工具 redis rdb 分析_redis_10

redis分析rdb文件工具 redis rdb 分析_redis分析rdb文件工具_11

四、总结

redis分析rdb文件工具 redis rdb 分析_redis分析rdb文件工具_12

因为RDB文件只用作后备用途,建议只在save上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。