一、主从复制配置
1.Redis服务器准备
服务器角色 | 服务器ip | 服务器端口 |
---|---|---|
master | 47.106.130.223 | 6379 |
slave | 120.77.222.219 | 6379 |
slave | 120.24.60.104 | 6379 |
2.安装redis
redis安装配置点击这里,在三台服务器上安装好redis并设置密码。
3.配置master
在第二步已经实现了redis的一些基本配置,如所有进程守护,密码等。配置master我们还需修改redis.conf如下。
#配置redisPID
pidfile /var/run/redis_6379.pid
#配置日志路径
logfile "/data/logs/redis.master.log"
4.配置slave
配置从库对redis.conf做如下修改
pidfile /var/run/redis6379.pid
logfile "/data/logs/redis.slave.log"
#配置主库的ip和端口
slaveof 47.106.130.223 6379
#由于主库设置了密码所以从库也需要将主库的密码配置配置文件里面
masterauth zzx123456
#开启从库只读
slave-serve-stale-data yes
5.重启测试
查看主库信息
查看从库信息
在主库120.77.222.219 set
然后在任意从库get
最后我们在从库set看看,报错了!(因为从库开启了只读模式)
二、哨兵模式配置
1.新增服务器,配置哨兵:
服务器角色 | 服务器ip | 服务器端口 |
---|---|---|
哨兵 | 47.100.192.69 | 8379 |
修改./redis-4.0.8/sentinel.conf文件如下
#端口设置为8379
port 8379
#开启线程守护
daemonize yes
#配置主服务ip+端口+选举投票数。1表示有一个sentinel同意即可升级为master
sentinel monitor mymaster 120.77.222.219 6379 1
#主库密码
sentinel auth-pass mymaster zzx123456
启动哨兵:
/usr/local/redis/redis-4.0.8/src/redis-sentinel /usr/local/redis/redis-4.0.8/sentinel.conf
2.配置Springboot项目
配置redis和哨兵,修改application如下
spring.redis.host=47.106.130.223
spring.redis.port=6379
spring.redis.password=zzx123456
spring.redis.database=3
#哨兵的配置列表
spring.redis.sentinel.master=mymaster
#配置多个哨兵
spring.redis.sentinel.nodes=47.100.192.69:8379,120.24.60.104:8379
测试类如下
@GetMapping("/save")
public void add(){
redisTemplate.delete("zzx");
redisTemplate.opsForValue().set("zzx",321);
System.out.println("添加成功");
}
浏览器上发送请求得到结果如下
3.主库宕机测试
在服务器上我们kill掉redis进程
浏览器上继续刚才的请求我们看日志会发现连接自动切换了,120.77.222.219被选举成为了master。