92.什么是 Redis 主从同步?
Redis 主从同步
Redis 的主从同步(replication)机制,允许 Slave 从 Master 那里,通过网络传输拷贝到完整的数据备份,从而达到主从机制。
- 主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据。
- 一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
- 第一次同步时,主节点做一次 bgsave 操作,并同时将后续修改操作记录到内存 buffer ,待完成后将 RDB 文件全量同步到复制节点,复制节点接受完成后将 RDB 镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。
好处
通过 Redis 的复制功,能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
实际上,我们不是非常推荐在 Redis 中,使用读写分离。主要有两个原因:
- Redis Sentinel 只保证主节点的故障的失效转移,而例如说 Jedis 库,也只监听了主节点的变化,但是从节点故障的情况,Jedis 是不进行处理的。这就会导致,Jedis 读会访问到从节点,导致问题。当然,Redisson 库的功能比较强大,已经支持从节点的故障监听。
- 如果到达需要读写分离的体量,一般写操作也不一定会少,可以考虑上 Redis Cluster 方案,更加可靠。
Redis 主从同步,是很多 Redis 集群方案的基础,例如 Redis Sentinel、Redis Cluster 等等。
更多详细,可以看看如下:
因为主从复制的内容很多,这里就不详细哔哔了。实际场景下,对于开发的面试,我们也不会特别问,毕竟更偏运维的内容。
- 《Redis 官方文档 —— 复制》
- 《Redis 开发与运维》 的「6. 复制」章节,更加详细完整。