【redis】RBD-内存快照
专题四-RBD-内存快照
类似与照片,记录内存中数据在某一时刻的状态。
对哪些数据做快照?
全量快照(为了保证数据的可靠性)
生成RDB文件的两个命令:
save:在主线程中执行,会导致阻塞
bgsave:创建一个子线程,专门用于写入RDB文件,避免主线程的阻塞(默认配置)
做快照时,数据还能被增删改吗?redis是否被阻塞。
redis借助操作系统提供的写时复制技术(Copy-On-Write,COW),在执行快照的同时,正常处理写操作。
如果主线程要修改一块数据,这块数据就会被复制一份,生成该数据的副本。然后bgsave子进程把这个副本数据写入RDB文件。
多久做一次快照?
快照间隔越小,数据保存越完整,但是会有这俩个方面的问题:
- 频繁写入磁盘,会给磁盘很大压力
- bgsave子进程通过fork操作从主进程创建出来,fork这个过程会阻塞主线程。
为了解决这个问题,可以使用增量快照,只需要记住哪些数据被修改了
Redis4.0的内存记录
混合使用AOF日志和内存快照的方法,在两次快照之间,使用AOF日志记录这期间所有的命令操作