Redis实现主从选举

背景Spring Boot 结合 JedisCluster

主从选举

主未掉线则一直是主,直到主掉线才切换主节点

java 复制代码
/**
* 采用Redis实现主从
*/
@Component
public class RedisServiceMaster {
	private static final String OK = "OK";
	private static final String MASTER_KEY = "master.key";
	private static final String ID = UUID.randomUUID().toString();
	//过期时间15秒
	private static final int EXPIRE_TIME = 15;
	
    @Autowired
    private JedisCluster jedisCluster;

	private boolean isMaster = false;

	/**
	* 选取主节点
	*/
	private void electionMaster() {
		try{
			 String res = jedisCluster.setnx(MASTER_KEY,ID,SetParams.setParams().nx().ex(EXPIRE_TIME));
			 isMaster = OK.equalsIgnoreCase(res);
		} catch (Exeception e) {
			isMaster = false;
		}
	}
	/**
	* 每隔5秒检测一次,如果发现不是主节点,则重新选举新的主节点
	*/
	@Scheduled(fixedRate = 5000)
	private void checkMaster(){
		if(isMaster){
			jedisCluster.exipre(MASTER_KEY, EXPIRE_TIME);
		} else {
			electionMaster();
		}
	}
	
	public boolean isMaster() {
		return isMaster;
	}
	
}
相关推荐
Java 码思客1 小时前
【ElasticSearch 从入门到架构师】第6章_分词器与文本检索
java·elasticsearch
Flittly1 小时前
【AgentScope Java新手村系列】(6)Hook与Middleware
java·spring boot·笔记·spring·ai
向量引擎1 小时前
AI API 正在进入“请求生命周期治理”阶段:从模型迁移、Agent 接入到成本与安全排错的工程化方法
java·人工智能·python·aigc·ai编程·ai写作·gpu算力
英俊潇洒美少年1 小时前
前端核心性能指标全解(CWV三大指标+辅助指标、检测方式、优化、面试背诵)
前端
云水一下1 小时前
Vue.js从零到精通系列(八):项目实战——构建一个完整的电商后台管理系统
前端·javascript·vue.js
Csvn1 小时前
Vue3 响应式陷阱:解构赋值后页面不动了?Proxy 的"隐形成员"在搞鬼
前端·vue.js
IT策士1 小时前
Redis 从入门到精通:分布式锁 —— 从 SETNX 到 Redlock
数据库·redis·分布式
许彰午1 小时前
34_Java设计模式之单例模式
java·单例模式·设计模式
LAM LAB1 小时前
【Web】网页如何模拟移动端获取定位\定位模拟测试
开发语言·前端·javascript