什么是数据持久化呢?
数据持久化就是将缓存内存中的数据存储在硬盘中,防止在系统故障或者redis宕机时出现数据丢失。
持久化的两种方式
1.RDB,可以理解为在指定的时间间隔内生成一次数据快照(二进制的文件),以此将缓存数据持久化到硬盘当中。简单来说就是隔一段时间就写入一次。当redis实例故障重启之后,从硬盘中读取快照文件,就可以恢复数据。但是,在两次保存中间的数据,当服务宕机时,由于没有存入快照,所以无法恢复。
2.AOF,可以理解为AOF是一个存储数据IO指令的文件。在数据丢失之后重新执行这些命令,就可以恢复数据。但是因为存储的是指令操作,所以文件较大,占用硬盘的IO资源。
以下是详细解释:
RDB
如果使用主进程来直接修改硬盘中的资源会堵塞进程,因此使用子进程来执行修改硬盘的操作。
原理: 在主进程中有一个页表来记录进程中虚拟内存和物理内存之间的映射关系。在 Redis 进行 RDB 快照持久化时,它会使用操作系统的 fork() 系统调用创建子进程。fork() 调用时,子进程会复制父进程的页表,但不会立即复制实际的物理内存数据。bgsave开始时会fork主进程得到子进程&#x