【面试官】Redis数据同步了解吗?

  • 面试官:我看你们项目用的Redis主从,数据同步了解吗?
  • 面试官:按你这么说,数据同步后主服务器某个键删除了,数据又不同步了怎么办?
  • 面试官:如果主从服务器断线呢?还是用的RDB来同步吗?
  • 面试官:那主服务器怎么知道断线期间执行了哪些命令?
  • 面试官:知道服务器运行ID吗?
  • 面试官:Redis心跳检测知道吧?

大家好,我是南哥。

一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。

文章目录

  1. Redis数据同步
    1. 数据同步过程
    2. 命令传播
    3. 部分重同步
    4. 复制偏移量
  2. 服务器运行ID
  3. Redis心跳检测

1. Redis数据同步

1.1 数据同步过程

面试官:我看你们项目用的Redis主从,数据同步了解吗?

回答数据同步过程问题前,大家有没想过为什么Redis要数据同步?不会是MySQL主从架构要数据同步,Redis就照猫画虎吧。

虽然这两者有关系型数据库和非关系型数据库的差异,但都是作为存储数据的数据库系统。而主从架构的目的就在于对数据有多个"备份",有了多个"备份",就自然而然衍生出众多好处。如负载均衡、灾难恢复、数据备份。

既然要"备份",那数据同步就必不可少了。Redis主从数据同步大致的过程如下。

  1. 首先,从服务器会先向主服务器发送SYNC命令
  2. 收到命令后,Redis主服务器会执行BGSAVE命令来生成一个RDB文件,并使用AOF缓冲区来记录在生成期间执行的写命令。关于BGSAVE命令和SAVE命令的区别,大家可以往前阅读我写的Redis系列文章。
  3. 完成第二步后,主服务器会将RDB文件发送给从服务器,让从服务器同步RDB文件数据。
  4. 当然这还没完,在生成RDB文件的过程中,仍然会有其他写命令到达服务器。Redis主服务器的AOF缓冲区会继续发送给从服务器,让它们之间的数据同步至最终状态

1.2 命令传播

面试官:按你这么说,数据同步后主服务器某个键删除了,数据又不同步了怎么办?

有了AOF缓冲区的概念还没完,Redis主从复制还有一个命令传播的概念等着你去学。

从服务器使用SYNC进行初次数据同步后,主、从服务器的数据库状态并不是每时每刻都保持一致的,这种情况反而是常态。肯定不能为了一条写指令的差异就重新执行SYNC命令,因为SYNC命令是一个非常耗费资源的操作。

这种情况Redis主服务器会将造成主从服务器数据不一致的写命令,即最近执行的写命令,发送给从服务器执行。这便是的过程,当从服务器执行命令后,主从服务器的数据库状态也就保持了一致

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java面试突击大厂 文章被收录于专栏

👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力

全部评论

相关推荐

4 7 评论
分享
牛客网
牛客企业服务