面试题答案
一键面试- 数据分片:Redis集群采用哈希槽(Hash Slot)的方式进行数据分片,将整个键空间划分为16384个槽,每个节点负责一部分槽。客户端通过计算键的CRC16值对16384取模,得到键所在的槽,进而找到对应的节点,这样能快速定位数据,提高消息处理效率。
- 节点通信:使用 gossip协议,节点之间通过互相发送gossip消息交换彼此状态信息,包括节点存活状态、负责的哈希槽等。这种方式能高效传播节点状态变化,使集群内各节点快速达成状态一致,便于消息准确路由。
- 高可用性:采用主从复制机制,每个主节点都有一个或多个从节点。主节点负责处理读写操作,从节点复制主节点数据。当主节点故障时,从节点可被选举为新的主节点继续提供服务,保障消息传输的连续性。
- 故障检测与自动故障转移:节点通过定期发送ping消息检测其他节点状态,若一段时间内未收到pong响应,则判定目标节点疑似下线(PFAIL)。当半数以上主节点都标记某个主节点为PFAIL时,该主节点被判定为下线(FAIL),集群会自动进行故障转移,从该主节点的从节点中选举新主节点。
- 管道(Pipeline)技术:客户端可以将多个命令一次性发送到Redis集群,减少网络往返次数,提升消息传输效率。Redis服务端按顺序执行这些命令,并将结果一次性返回给客户端。