【Redis专题】- 持久化机制

持久化

Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。

RDB

RDB (Redis DataBase) 持久化是把当前进程数据生成快照保存到硬盘的过程。所谓内存快照,就是指内存中的数据在某一个时刻的状态记录。

给哪些内存数据做快照?

Redis 的数据都在内存中,为了提供所有数据的可靠性保证,它执行的是全量快照,把内存中的所有数据都记录到磁盘中。但是 RDB 文件就越大,往磁盘上写数据的时间开销就越大。

RDB文件的生成是否会阻塞主线程?

Redis 提供了两个手动命令来生成 RDB 文件,分别是 savebgsave;

save:在主线程中执行,会导致阻塞;对于内存比较大的实例会造成长时间阻塞;
bgsave:创建一个子进程,专门用于写入 RDB 文件,避免了主线程的阻塞,这也是Redis RDB 文件生成的默认配置。

除了执行命令手动触发之外,Redis内部还存在自动触发RDB 的持久化机制。如:

1、使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。
2、如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点。
3、执行debug reload命令重新加载Redis 时,也会自动触发save操作。
4、默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave。

注意:Redis的RDB持久化是默认开启的,如果关闭将配置文件中的save配置改为 save “”
在这里插入图片描述

bgsave 的执行流程

为了快照而暂停写操作,肯定是不能接受的。所以这个时候,Redis 就会借助操作系统提供的写时复制技术(Copy-On-Write, COW),在执行快照的同时,正常处理写操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值