面试官:请讲一下Redis主从复制的功能及实现原理
摘要:Redis在主从模式下会有许多问题需要考虑,这里写了一些关于redis在多服务器下的一些问题分析和总结。 Redis单节点存在单点故障问题,为了解决单点问题,一般都需要对redis配置从节点,然后使用哨兵来监听主节点的存活状态,如果主节点挂掉,从节点能继续提供缓存功能。主从配置结合哨兵模式能解决单点故障问题,提高redis可用性。从节点仅提供读操作,主节点提供写操作。对于读多写少的状况,可给主节点配置多个从节点,从而提高响应效率。 主从复制过程: 从节点执行slaveof[masterIP][masterPort],保存主节点信息 从节点中的定时任务发现主节点信息,建立和主节点的socket连接 从节点发送Ping信号,主节点返回Pong,两边能互相通信 连接建立后,主节点将所有数据发送给从节点(数据同步) 主节点把当前的数据同步给从节点后,便完成了复制的建立过程。接下来,主节点就会持续的把写命令发送给从节点,保证主从数据一致性。 Redis的数据同步过程: redis2.8之前使用sync[runId][offset]同步命令,redis2.8之后使用psync[runId][offset]命令。 两者不同在于,sync命令仅支持全量复制过程,psync支持全量和部分复制。 介绍同步之前,先介绍几个概念: runId: 每个redis节点启动都会生成唯一的uuid