RDB
就是 redis database backup file
数据备份文件 就是把内存中的所有数据都保存在磁盘中。
save
注意这个保存过程是主进程在做 因为redis 是单线程 所有其他所有请求都会被卡死。
bgsave
这个稍微友好一点 是子进程 执行,避免主进程收到影响。
redis在服务停机的时候 它自动就会做一次 RDB的保存 (保存在本机运行目录)
保存完之后 它才会真正退出。
配置文件中 都可以修改这些项
异步持久化的原理
sava命令的主进程 持久化 这个简单理解。
我们聊一下 这个命令 bgsave 他是怎么异步子进程完成内存数据写入RDB的:
在操作系统中 主进程是无法直接染指物理内存的 而是由操作系统分配虚拟内存 然后通过虚拟内存和物理内存的映射表 也叫 页表 去读取数据。
所以当bgsave进行的时候 主进程会 创建一个子进程 然后将自己的 映射表 复制给 子进程。 这时候 子进程通过映射表 去内存里面读取数据
RDB 的缺点
它的执行间隔时间 比较长, 两次rdb写入数据有丢失的风险
因为fork也是有时间 有代价的 如果你把间隔时间调的很短 子进程根本忙不过来