当前位置:网站首页>Redis - 8、持久化之RDB(Redis DataBase)
Redis - 8、持久化之RDB(Redis DataBase)
2022-06-22 11:28:00 【Q.E.D.】
1、总体介绍
Redis是一个基于内存的数据库,它的数据是存放在内存中,内存有个问题就是关闭服务或者断电会丢失。
Redis的数据也支持写到硬盘中,这个过程就叫做持久化。
Redis提供了2种不同形式的持久化方式
- RDB(Redis DataBase)
- AOP(Append Of File)
2、RDB(Redis DataBase)
2.1、RDB是什么?
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是键快照文件直接读到内存里。
2.2、备份是如何执行的
Redis会单独创建(fork)一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束后,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就是确保了极高的性能,如果需要进行大规模的恢复,且对数据恢复的完整性不是非常敏感,那RDB方
式要不AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
2.3、Fork
- Fork的作用是复制一个与当前进程一样的进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,它是一个全新的进程,并作为原进程的子进程。
- 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,处于效率考虑,linux中引入了“写时复制技术”
- 一般情况父进程和子进程会共用一段物理内存,只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
2.4、RDB持久化流程

2.5、指定备份文件的名称
在redis.conf中,可以修改rdb备份文件的名称,默认为dump.rdb,如下:

2.6、指定备份文件存放的目录
在redis.conf中,rdb文件的保存的目录是可以修改的,默认为Redis启动命令所在的目录,如下

2.7、触发RDB备份
2.7.1、方式1:自动备份,需配置备份规则
可在redis.conf中配置自动备份的规则,默认规则如下:

save用来配置备份的规则
save的格式: save 秒钟 写操作次数
默认是1分钟内修改了1万次,或5分钟内需修改了10次,或30分钟内修改了1次。
示例:设置20秒内有最少有3次key发生变化,则进行备份
save 20 32.7.2、方式2:手动执行命令备份(save | bgsave)
有2个命令可以触发备份。
save:save时只管保存,其他不管,全部阻塞,手动保存,不建议使用。
bgsave:redis会在后台异步进行快照操作,快照同时还可以响应客户端情况。
可以通过 lastsave 命令获取最后一次成功生成快照的时间。
2.7.3、方式3:flushall命令
执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义。
2.8、redis.conf 其他一些配置
2.8.1、stop-writes-on-bgsave-error:当磁盘满时,是否关闭redis的写操作
stop-writes-on-bgsave-error用来指定当redis无法写入磁盘的话,是否直接关掉redis的写操作,推荐yes。

2.8.2、rdbcompression:rdb备份是否开启压缩
对于存储到磁盘中的rdb快照文件,可以设置是否进行压缩,如果是的话,redis会采用LZF算法进行压缩。
如果你不想小号CPU来进行压缩的话,可以设置为关闭此功能,推荐yes。

2.8.3、rdbchecksum:是否检查rdb备份文件的完整性
存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取最大的性能提升,可以关闭此功能。
推荐yes。

2.9、rdb的备份和恢复
2.9.1、先通过config get dir 查询rdb文件的目录

2.9.2、然后将rdb的备份文件 *.rdb 文件拷贝到别的地方
cp dump.rdb dump2.rdb2.9.3、rdb的恢复
- 关闭redis
- 先把备份的文件拷贝到工作目录 cp dump2.rdb dump.rdb
- 启动redis,备份数据直接加载,数据被恢复
2.10、优势
- 适合大规模数据恢复
- 对数据完整性和一致性要求不高更适合使用
- 节省磁盘空间
- 恢复速度快

2.11、劣势
- Fork的时候,内存中的数据会被克隆一份,大致2倍的膨胀,需要考虑
- 虽然Redis在fork的时候使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能
- 在备份周期在一定间隔时间做一次备份,所以如果Redis意外down的话,就会丢失最后一次快照后所有修改
2.12、如何停止RDB?
动态停止RDB: redis-cli config set save "" #save后给空值,表示禁用保存策略。
边栏推荐
- 微信小程序项目实例——图片处理小工具(自制低配版美图秀秀)
- Niuke challenge 53e problem solution & Notes on learning with flowers and trees
- Solution to the 55D problem of Niuke challenge
- Electron adding SQLite database
- R language uses user-defined functions to write in-depth learning parametric relu activation functions and visualize parametric relu activation functions
- Add custom fields to the time synchronization message based on uavcan protocol in Px4 code learning
- SAP Marketing Cloud 功能概述(二)
- canvas简单的粒子效果的实现
- 【软工】 软件体系结构
- Certificate issuance process on aliyun OS (certbot)
猜你喜欢

把蔚来告上法庭,奥迪急什么?

How many of the eight classic MySQL errors did you encounter?

Install pyGame
![Exchange the nodes in the linked list in pairs [the principle of one-way linked list without chain]](/img/67/8e9f3c396a8f529a616964b69cc47f.png)
Exchange the nodes in the linked list in pairs [the principle of one-way linked list without chain]

KNN classification of MATLAB (with source code) is used to realize pixel classification (set the proportion of training set by yourself) and print test accuracy

“中国巴菲特”段永平:投资有道

Niuke challenge 53c

【软工】 设计模块

2022 the latest software testing classic summarized by major manufacturers. After reading it, I'm not afraid I won't get an offer
![[Software Engineering] Introduction & process and life cycle modeling](/img/92/433e2fae846406252ee0d4c47bd54b.png)
[Software Engineering] Introduction & process and life cycle modeling
随机推荐
[Software Engineering] Introduction & process and life cycle modeling
Install pyGame
【软工】 概论 & 过程和生命周期建模
Vector data of Zunyi city's benchmark land price in 2022 (WGS84)
奋斗吧,程序员——第四十八章 千金纵买相如赋,脉脉此情谁诉
What is homology??? Cross domain error??? How to solve???
IO之ByteStream案例
奋斗吧,程序员——第三十八章 旧时茅店社林边,路转溪头忽见
Call center CTI system
牛客挑战赛55D题解
奋斗吧,程序员——第四十一章 今日种种,似水无痕;明夕何夕,君已陌路
奋斗吧,程序员——第四十章 一面风情深有韵,半笺娇恨寄幽怀
克鲁斯卡尔重构树
Set up OpenPGP key server
成功案例 | 安超云助力兰州大学第二医院搭建新型IT基础设施平台 提升医疗信息资源利用率
"Dare not doubt the code, but have to doubt the code" a network request timeout analysis
The software used is PHP MySQL database
牛客挑战赛54F题解 & 李超树学习笔记
把蔚来告上法庭,奥迪急什么?
The R language uses the matchit package for propensity matching analysis and match The data function builds the matched sample set, uses the LM function to build the linear regression model for the ma