redis的高可靠: 1 数据尽可能的少丢失。 2 服务器尽可能的少中断。
当redis因为宕机而执行数据恢复时,这个过程中redis是无法对外界做请求操作的。
redis应对这个问题是增加副本冗余,将一份数据同时保存在多个实例上。一个实例出现故障,其他实例也会第一时间处理请求。 这里解决了redis数据恢复时对外不可用的问题,但是主从数据库之间的数据又是怎么保持同步的呢?
redis采用了主从库模式,主从库采用读写分离的方式。
读请求:主库,从库都可以接受。
写操作:首先主库执行,然后将写操作同步给从库。
为什么要采用读写分离的方式:
现在一个场景,对一个key并发的进行三次修改,根据请求负载均衡会落到不同的实例上,每个实例上都有这个key修改的数据,就数据出现不一致。
但是采用读写分离的话,主要主库执行客户端的请求操作,接着同步给从库,不会出现多节点数据不一致的问题。
主从库之前如何进行同步呢:
主从库之间通过命令 replicaof进行同步。在从库上 执行 replicaof 129.2.2.2 6379
主从库之间通过全量复制实现数据同步,以及通过主从从模式分担主库的压力。一旦从库完成了全量复制,他们之间就会以长链接的方式保持连接,后续主库的命令也会通过这个长连接发送给从库,长连接能避免频繁建立连接的开销。