目录
一、RDB介绍
Redis是基于内存存储的NOSQL,一旦发生了断电或者宕机,那么内存条的数据将全部丢失。为此出现了RDB快照模式。它用来给redis的内存数据进行保存到硬盘上,从而实现数据的持久化。
RDB会每隔一定时间内都会检测当前数据的变化次数和改变频率,如果它满足redis.config配置文件的规定,那么主线程会新建出一个子线程会将内存的数据保存到硬盘上。
二、RDB在redis.config的默认配置
################################ SNAPSHOTTING ################################
save 900 1 #在900秒内,有一条数据就自动保存。
save 300 10 #在300秒内,有十条数据就自动保存。
save 60 10000 #在60秒内,有一万条数据就自动保存。
stop-writes-on-bgsave-error yes #数据保存到rdb文件失败后,默认进行继续工作
rdbcompression yes #数据保存到rdb文件后,默认进行文件压缩,此功能需要cpu加持
rdbchecksum yes #数据保存到rdb文件后,默认要进行错误校验
dbfilename dump.rdb #rdb默认保存在硬盘的文件叫dump.rdp
dir ./ #rdb文件默认存放在当前路径
三、RDB持久化触发策略
RDB的持久化触发策略有两种:1、手动触发。2、自动触发
1.手动触发
执行save命令,堵塞redis线程,将内存数据保存到硬盘前,不处理其他命令操作。
执行bgsave命令,通过异步进行内存数据保存到硬盘中,在此期间可以进行其他命令操作。
执行flushall命令,清空整个redis数据,并生成空的dump文件。
执行shutdown命令,将内存数据保存到硬盘中,并退出redis服务。
1.自动触发
通过redis.conf配置文件中的save命令,来对redis数据进行自动持久化操作。当触发redis.config里的save时,redis会采用异步的方式进行内存数据保存在硬盘上。
################################ SNAPSHOTTING ################################
save 900 1 #在900秒内,有一条数据就自动保存。
save 300 10 #在300秒内,有十条数据就自动保存。
save 60 10000 #在60秒内,有一万条数据就自动保存。
三、数据恢复
redis会自动读取redis.conf配置文件中的指定路径指定文件名的备份文件。
################################ SNAPSHOTTING ################################
dbfilename dump.rdb #rdb默认保存在硬盘的文件叫dump.rdp
dir ./ #rdb文件默认存放在当前路径
四、RDB优势
在大规模数据恢复快速
在服务器出现宕机或断电的时候,能保留下上一次备份的rdb文件
与AOF相比,RDB恢复数据会快速很多
五、RDB劣势
在最后一次数据持久化的时候,如果发生宕机或者断电,很有可能会出现数据丢失。
子线程机进行redis内存数据保存到硬盘时,会消耗cup资源和时间。