Redis 主从复制:主从节点之间如何同步数据?
单机 Redis 存在单点风险问题,也就是说,如果唯一的一个 Redis 节点宕机的话,就会导致大量的请求直接被打到数据库,严重的情况下,数据库很可能会直接被干宕机了。
这个时候,保障 Redis 服务的高可用就成为了我们不得不面对的问题。
如何保证 Redis 服务高可用? 最简单的一种办法就是基于 主从复制 搭建一个 Redis 集群,master(主节点)主要负责处理写请求,slave(从节点)主要负责处理读请求。

如果 master 宕机的话,从 slave 中选出一台作为 master 即可实现故障转移(Failover)。

是不是有点类似于 MySQL 的读写分离?这其实就是一种典型的多副本/备份的思想,经常被用在高可用架构上。
什么是主从复制?
简单来说,主从复制 就是将一台 Redis 主节点的数据复制到其他的 Redis 从节点中,尽最大可能保证 Redis 主节点和从节点的数据是一致的。主从复制是 Redis 高可用的基石,我们后面介绍到的 Redis Sentinel 以及 Redis Cluster 都依赖于主从复制。
主从复制这种方案不仅保障了 Redis 服务的高可用,还实现了读写分离,提高了系统的并发量,尤其是读并发量。
主从复制这种方案基于 Redis replication(默认使用异步复制),开发者可以通过 replicaof (Redis 5.0 之前是 slaveof 命令)命令来 配置各个 Redis 节点的主从关系。
# 在指定 redis 节点上执行 replicaof 命令就可以让其成为 master 的 slave
# ip port 是 master 的
replicaof ip port
配置完成之后,主从节点之间的数据同步会自动进行,不需要人为插手。
至于具体要配置多少 slave 节点,主要取决于项目的读吞吐量,因为 slave 节点分担的是读请求,写请求由 master 节点负责。