Redis 主从复制技术原理
Single_Yam 人气:0
基于前面介绍的 Redis 内容,Redis 只能作为一个单机内存数据库,一旦服务器宕机即不能提供服务,即便能通过持久化策略重启恢复数据,往往也做不到百分之百还原。再一个就是,单机的 Redis 需要处理所有的客户端请求,包括读和写操作,压力很大。
说了这么多,Redis 当然也提供了解决方案,主从复制技术是实现 Redis 集群的最基本架构,集群中有一台或多台主节点服务器(master),多台从节点服务器(slave),slave 持续不断的同步 master 上的数据。一旦 master 宕机,我们可以切换 salve 成为新的 master 稳定提供服务,也不用担心 master 宕机导致的数据丢失。
下面我们就一起来看看主从复制技术的设计与应用,先看理论再看源码实现。
### 一、理论上的主从复制技术设计
主从复制技术有两个版本,2.8 以前的版本,设计上有缺陷,在 slave 断线后重连依然需要 master 重新发送 RDB 重新进行数据更新,效率非常低。2.8 版本以后做了重新设计,通过引入偏移量同步,相对而言非常的高效,我们这里不去讨论旧版本的设计了,直接看新版本的主从复制技术设计。
每一个 Redis 启动后,都会认为自己是一个 master 节点,你可以通过以下命令通知它成为 slave 并向 master 同步数据:
```
slaveof [masterip] [masterport]
```
另一种方式就是在 Redis 启动配置文件中直接指明让它作为一个 slave 节点启动,并在启动后同步 master 节点数据。配置项和命令是一样的。
如果 master 配置了密码连接,那么还需要在 slave 的配置文件中指明 master 的连接密码:
```
masterauth
加载全部内容