文章目录
一、Redis持久化机制
Redis是一个支持可持久化的内存数据库,通过持久化机制把你内存的数据同步到硬盘文件来保证其持久化。当Redis重启的时候会将硬盘中的文件重新加载到内存之中,来达到数据回复的问题。
实现方式:单独创建一个fork()进程,将当前的父类进程的数据库数据复制到子进程的内存之中,然后由子进程将其写入到临时文件中。,持久化进程结束后能将临时文件替换上次的快照文件,然后子进程退出内存释放。
快照(rdb)
rdb是默认的持久化方式。Snapshot将内存中文件以快照的方式保存到硬盘的二进制文件并生成dump.rdb文件并通过配置文件中save参数来定义快照的周期。
Redis 使用操作系统的多进程 COW(Copy On Write) 机制来实现快照持久化,
fork(多进程)
Redis在持久化的过程中会调用glibc的函数fork产生一个子进程,快照持久化就可以完全交给子进程进行处理,父进程可以继续处理客户的请求。子进程在刚开始创建的时候和父进程共享内存里的数据段。这样内存就不会由太大的变化。
AOF:
AOF 日志存储的是 Redis 服务器的顺序指令序列,AOF 日志只记录对内存进行修改的指令记录。
Redis会将每一个收到的写命令都通过Write函数追加到文件最后,当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。