文章目录
- 一、初识RDB
- 二、RDB特点
- 1、优势
- 2、劣势
- 三、RDB操作
- 1、概述
- 2、操作
- 四、总结
一、初识RDB
RDB 全称(
Redis DataBase
)
在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照
,它恢复数据时是将快照文件直接读到内存里官网介绍:
流程图
看不懂这图的话,继续往下看文章,看完文章后再回来!
二、RDB特点
1、优势
适合大规模的数据恢复
- 对
数据完整性和一致性要求不高
更适合使用 节省磁盘空间
恢复速度快
2、劣势
- Fork的时候,内存中的数据被克隆了一份,
大致2倍的膨胀性(内存)
需要考虑 - 虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较
消耗性能
。 - 在备份周期在一定间隔时间做一次备份,所以如果Redis意外(宕机)down掉的话,就会
丢失最后一次快照后的所有修改
三、RDB操作
1、概述
Redis会单独创建 (fork) 一个子进程来进行持久化,
会先将数据写入到一个临时文件中
,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件
。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
Fork
- Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
- 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux中引入了“
写时复制技术
” - 一般情况父进程和子进程会共用同一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
持久化流程
dump.rdb文件
在redis.conf中配置文件名称,默认为dump.rdb
配置位置
rdb文件的保存路径,也可以修改。默认为Redis启动时命令行所在的目录下
2、操作
1)配置快照配置
2)数据库存值
3)复制一份临时RDB
可以想象成
游戏存档
!
4)清除数据库
可以想象成
玩游戏时停电了
!
执行flushall
命令,会产生dump.rdb文件
5)把临时RDB复制到dump.rdb中
可以想象成
游戏读档
!
四、总结
因为RDB文件只用作后备用途,建议只在save上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1
这条规则。