All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.wicp.tams.common.redis.pool.JedisSentinelPoolTams Maven / Gradle / Ivy

The newest version!
/*
 * **********************************************************************
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称:common
 * 项目描述:公共的工具集
 * 版权说明:本软件属andy.zhou([email protected])所有。
 * ***********************************************************************
 */
package net.wicp.tams.common.redis.pool;

import java.util.Map;
import java.util.Set;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import net.wicp.tams.common.Conf;
import net.wicp.tams.common.redis.RedisAssit;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool;

public class JedisSentinelPoolTams extends AbsPool {
	private volatile JedisSentinelPool jedisSentinelPool;

	private final String serverName;

	public JedisSentinelPoolTams() {
		this.serverName = "default";
	}

	public JedisSentinelPoolTams(String serverName, String masterName, Set sentinels,
			final GenericObjectPoolConfig poolConfig, final int timeout) {
		this.serverName = serverName;
		poolConfig.setJmxEnabled(true);
		poolConfig.setJmxNamePrefix("jedis-pool");
		Map data = Conf
				.getAllConfigValues(String.format("%s.%s", "common.redis.redisserver", serverName),true);
		// 第一个timeout Jedis连接超时(单位:毫秒),第二个timeout读写超时(单位:毫秒)
		JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, sentinels, poolConfig, timeout, timeout,
				data.get("password"), RedisAssit.getConfigInt(data, "defaultDb"),
				data.get( "clientName"));
		setJedisSentinelPool(jedisSentinelPool);
	}

	public void setJedisSentinelPool(JedisSentinelPool jedisSentinelPool) {
		doLeak(this.serverName, jedisSentinelPool);
		this.jedisSentinelPool = jedisSentinelPool;
	}

	@Override
	public Jedis getResource() {
		return this.jedisSentinelPool.getResource();
	}

	@Override
	public void destroy() {
		this.jedisSentinelPool.destroy();
		this.jedisSentinelPool = null;
	}

	@Override
	public boolean isInit() {
		return this.jedisSentinelPool != null;
	}

	@Override
	public void returnResource(Jedis jedis) {
		if(this.jedisSentinelPool!=null) {
			this.jedisSentinelPool.returnResource(jedis);
		}
		
	}

	@Override
	public void returnBrokenResource(Jedis jedis) {
		if(this.jedisSentinelPool!=null) {
			this.jedisSentinelPool.returnBrokenResource(jedis);
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy