上次redis 测试redis集群 在master节点崩掉的状况下集群的可用性. 涉及到一个问题,程序如何在主节点失效的状况下支持切换主节点, 这里是基于spring boot 集成redis 。java
step1: node
application.propertiesredis
# name of Redis server spring.redis.sentinel.master=devmaster # comma-separated list of host:port pairs spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380
step2: spring
controller.javaapp
@RequestMapping("/editUser") @ResponseBody public String editUserCache( @RequestParam(value="userId",required = false) long userId, @RequestParam(value="firstName",required = false) String firstName ){ User user=new User(); user.setId((long)userId); user.setFirstName(firstName); ValueOperations<String, String> ops = template.opsForValue(); ops.set("user_"+user.getId(),user.getId()+","+user.getFirstName()); return "userId:"+user.getId().toString()+",userFirstName:"+user.getFirstName()+",userLastName:"+user.getLastName(); }
User.java测试
public class User { private Long id; private String firstName; private String lastName; public User(Long id,String firstName, String lastName) { this.id = id ; this.firstName = firstName; this.lastName = lastName; } public User() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
step3: ui
测试redis 集群环境 this
向boot发一个hhtp请求 日志
至关于在redis 加入一个User,对象.server
集群的结果:
step4:
已知7001是master,让它休眠
step5:
再次插入记录
,再插入一条记录
再次记录都成功
日志不少,焦点是7001 ,查看它的部分日志
日志显示7001 开始时master后来失去链接,最后成为7002的slave 。