package com.fly.test;
import java.util.HashSet;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;
/**
* Jedis 连接池
* @author YuLF
*
*/
public class JedisPoolUtil {
/* redis连接池 */
private static volatile JedisPool jedisPool = null;
/* redis的一些配置信息 */
private static JedisPoolConfig poolConfig = null;
/* redis哨兵,方便主服宕机之后随时获取最新的主服master ip端口 */
private static JedisSentinelPool jedisSentinelPool = null;
/* 类加载时初始化配置 */
static {
/* 值可以放到配置文件动态读取 */
poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle( 32 ); /* 空闲连接 */
poolConfig.setMaxTotal( 999 ); /* 最大jedis连接数 */
poolConfig.setMaxWaitMillis( 100 * 1000 ); /* 最大等待时间100秒 */
poolConfig.setTestOnBorrow( true ); /* 检查有效的连通 */
Set<String> set = new HashSet<>();
/* set中放的是哨兵的Ip和端口,可以放到配置文件动态读取 */
set.add( "192.168.174.130:6399" );
/*
* set.add("192.168.0.9:26380");
* set.add("192.168.0.9:26381");
*/
jedisSentinelPool = new JedisSentinelPool( "master_redis", set, poolConfig, 60000 );
}
private JedisPoolUtil()
{
}
public static JedisPool getJedisPoolInstance()
{
if ( null == jedisPool )
{
synchronized (JedisPoolUtil.class ) {
if ( null == jedisPool )
{
HostAndPort ipAndPort = jedisSentinelPool.getCurrentHostMaster();
jedisPool = new JedisPool( poolConfig, ipAndPort.getHost(), ipAndPort.getPort() );
}
}
}
return(jedisPool);
}
public static void release( Jedis jedis )
{
if ( jedis != null )
{
/*
*
* jedisPool.returnResource修饰符被改为protected了
*/
jedis.close();
}
}
}
Java中使用Jedis连接池,避免频繁创建销毁
最新推荐文章于 2024-05-26 14:25:26 发布