redis是怎么解决在bgsave做快照的时候允许数据修改呢?

提问者:帅平 问题分类:面试刷题

redis是怎么解决在bgsave做快照的时候允许数据修改呢?

1 个回答
Rae
Rae 管理员

这里主要是利用bgsave的子线程实现的,具体操作如下:

1、如果主线程执行读操作,则主线程和 bgsave 子进程互相不影响;
2、如果主线程执行写操作,则被修改的数据会复制一份副本,然后 bgsave子进程会把该副本数据写入 RDB 文件,在这个过程中,主线程仍然可以直接修改原来的数据。

最后,要注意,Redis 对 RDB 的执行频率非常重要,因为这会影响快照数据的完整性以及 Redis 的稳定性,所以在 Redis 4.0 后,增加了 AOF 和 RDB 混合的数据持久化机制: 把数据以 RDB 的方式写入文件,再将后续的操作命令以 AOF 的格式存入文件,既保证了 Redis 重启速度,又降低数据丢失风险。

发布于:1个月前 (10-19)
我来回答