Redis面试题

题目

redis 的同步机制了解吗?可以聊聊吗?

答案

当 redis 的从服务器首次连接主服务器的时候,主服务器会执行一次 bgsave,将当前时间节点之前的数据生成一个 rdb 文件给从服务器,并将当前时间点之后的所有执行的写操作都记录到一个缓存里面。当从服务器将该 rdb 文件数据加载到内存之后再通知主节点,主节点会将缓存中的写操作记录通知从服务器。这样就保证了两个节点之间的数据一致。

为了解决断线后重复制的问题,redis 这边增加了 复制偏移量和服务器运行 id 这两个功能。每个服务器都有自己的容器 id,当从服务器断线后重复制的时候,会先根据自己记录的主服务器 id 和当前连接的服务器 id 进行比较,如果是相同的,则可以继续复制,如果不相同,则需要从头开始复制数据。相同的时候,就将自己当前记录的偏移量信息也传送到服务端,那么服务端就会根据传递的偏移量开始生成 rdb 数据给从服务器。