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;
	}
	
}
相关推荐
文丑颜不良啊30 分钟前
LeetCode2221~2240题目解析
java·leetcode
秋饼44 分钟前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
文丑颜不良啊3 小时前
LeetCode2161~2180题目解析
java·leetcode
FRing033 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
我不会起名字3224 小时前
Redis 从 0 到 1(三十三):机器断电 Redis 起不来——AOF/RDB 损坏的 4 步抢救流程
redis·数据恢复·aof·rdb·排查
文丑颜不良啊4 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发4 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
天天被压力5 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力5 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A5 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python