# 1 Redis主从服务配置
### 1.1概述
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。主从同步,有以下好处:
实现数据的备份,减少单点故障带来的损失;有利于实现负载均衡。本来一台服务器负责所有数据的读写,而通过主从同步,可以让多个从服务器负责数据的读,而主服务器主要负责数据的写,减轻了单点压力。
### 1.2实现机制
(1)Slave服务器连接到Master服务器.
(2)Slave服务器发送SYCN命令.
(3)Master服务器备份数据库到.rdb文件.
(4)Master服务器把.rdb文件传输给Slave服务器.
(5)Slave服务器把.rdb文件数据导入到数据库中.
上面的这5步是同步的第一阶段, 接下来在Master服务器上调用每一个命令都使用replicationFeedSlaves()来同步到Slave服务器.而replicationFeedSlaves()主要做的工作就是把用户执行的命令发送到所有的Slave服务器, 让Slave服务器执行. 这样就可以实施同步功能.
### 1.3相关配置
**案例:**
主服务:172.168.10.254 6379
从服务:172.168.10.254 6380
修改redis.conf配置文件,主要配置如下:
1) 配置相应的ip和端口
主:
bind172.168.10.254 #绑定主机IP, (必须修改为网卡ip地址)
port 6379 #监听端口,默认为6379
从:
bind172.168.10.254 #绑定主机IP, (必须修改为网卡ip地址)
port 6380 #监听端口,默认为6379
2) 修改从服务redis.conf 配置:
slaveof172.168.10.254 6379 #设置主服务的IP及端口
slave-read-only yes #配置从机是否只读
masterauthpwd123 #设置主服务的连接密码
slave-serve-stale-datayes #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务。
#repl-ping-slave-period10 #master端ping slave端的时间间隔,时刻检测slave连接的有效
#repl-timeout60 # replication连接的超时时间
#slave-priority100 #slave的权重,用于redis sentinel模式中,如果masterdown,权重大的slave接替master
slave-priority100 #slave级别,数字越小级别越大(在master挂掉,slave升级用到)
### 1.4测试验证
主从服务配置完成后,启动相应服务;
1) 从服务日志信息将显示从masger主服务同步数据:
![](https://box.kancloud.cn/2016-06-03_575103f9adf0c.jpg)
2) 主服务日志信息将显示slave从同步数据成功:
![](https://box.kancloud.cn/2016-06-03_575103fa04570.jpg)
3) 分别用redis-cli连接:
[root@centosredis]# redis-cli -h 172.168.10.254 -p 6379
172.168.10.254:6379>
[root@centosredis]# redis-cli -h 172.168.10.254 -p 6380
172.168.10.254:6380>
4) 测试:
在主服务设置相应的key数据:
![](https://box.kancloud.cn/2016-06-03_575103fa4bfaa.jpg)
在从服务上可以查看到相应的同步数据:
![](https://box.kancloud.cn/2016-06-03_575103faa77ec.jpg)
此时查看主从服务的相应日志文件可以看到:
主服务:
![](https://box.kancloud.cn/2016-06-03_575103fad800f.jpg)
从服务:
![](https://box.kancloud.cn/2016-06-03_575103fb1be82.jpg)
可以看到的是当主服务数据发生变化时,将实时同步到从服务上。
至此Redis主从服务数据同步配置完成!