Java面试 Redis篇-数据持久化

什么是数据持久化呢?

数据持久化就是将缓存内存中的数据存储在硬盘中,防止在系统故障或者redis宕机时出现数据丢失。

持久化的两种方式

1.RDB,可以理解为在指定的时间间隔内生成一次数据快照(二进制的文件),以此将缓存数据持久化到硬盘当中。简单来说就是隔一段时间就写入一次。当redis实例故障重启之后,从硬盘中读取快照文件,就可以恢复数据。但是,在两次保存中间的数据,当服务宕机时,由于没有存入快照,所以无法恢复。

2.AOF,可以理解为AOF是一个存储数据IO指令的文件。在数据丢失之后重新执行这些命令,就可以恢复数据。但是因为存储的是指令操作,所以文件较大,占用硬盘的IO资源。

以下是详细解释:

RDB

如果使用主进程来直接修改硬盘中的资源会堵塞进程,因此使用子进程来执行修改硬盘的操作。

原理: 在主进程中有一个页表来记录进程中虚拟内存和物理内存之间的映射关系。在 Redis 进行 RDB 快照持久化时,它会使用操作系统的 fork()​ 系统调用创建子进程。fork()​ 调用时,子进程会复制父进程的页表,但不会立即复制实际的物理内存数据。bgsave开始时会fork主进程得到子进程&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值