Redis持久化过程详解
这篇文章, 主要了解 2种持久化方式的 具体操作过程, 会屏蔽掉其他的东西
全局过程
- 客户端向 redis实例中, 发出了一个写操作
- redis得到这个写操作, 把数据存储内存中
- 调用 系统API 将数据写入磁盘
- 操作系统 将 缓冲区的数据 交给 磁盘控制器
- 磁盘控制器 把数据 写入实际的物理媒介
RDB
- 它是 redis 默认开启的一种持久化方式
- 目标是 : redis 当前存储的所有数据, 它是一种快照
- 当满足一定条件之后, 会自动进行的一种方式 (bgsave)
- 当然也可以使用 save 或者 bgsave 进行手动触发 RDB 的方式
- 执行FLUSHALL命令;
- 执行复制(replication)时。
- 它是一种二进制的数据流, 因此恢复起来特别的快
流程
save 和 bgsave 的区别 : save 是一种阻塞进行持久化的方式, bgsave则是异步的
这边就描述一下 bgsave 的方式
- 因为某原因触发了RBD的流程(自动触发, 手动bgsave)
- Redis父进程首先判断:当前是否在执行这个过程的子进程,如果在执行则bgsave命令直接返回。主要是基于性能方面的考虑:两个并发的子进程同时执行大量的磁盘写操作,可能引起严重的性能问题。</