Redis链接池双锁加载的单例模式及JedisPoolConfig的配置

package com.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisPoolUtil {
//volatile是为了解决线程的可见性
	private static volatile JedisPool jedisPool = null;
	private RedisPoolUtil() {}
	
	public static JedisPool getPool() {
		if(jedisPool==null) {
			synchronized (RedisPoolUtil.class) {
				if(jedisPool==null) {
					JedisPoolConfig config = new JedisPoolConfig();//配置
					config.setMaxActive(1000);
					config.setMaxIdle(52);
					config.setMaxWait(1000*10);
					config.setTestOnBorrow(true);
					jedisPool = new JedisPool(config, "192.168.0.110", 6379);
				}
			}
		}
		return jedisPool;
	}
	
	public static void release(JedisPool jedisPool,Jedis jedis) {
		if(jedis!=null) {
			jedisPool.returnResourceObject(jedis);
		}
	}
}
config.setMaxActive(1000);//最大链接数
				config.setMaxIdle(52);//最大空闲链接数
				config.setMaxWait(1000*10);//最长等待时间
				config.setTestOnBorrow(true);//在获取链接的时候检查有效性, 默认false

//链接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
config.setBlockWhenExhausted(true);java

//设置的逐出策略类名, 默认DefaultEvictionPolicy(当链接超过最大空闲时间,或链接数超过最大空闲链接数)
config.setEvictionPolicyClassName(“org.apache.commons.pool2.impl.DefaultEvictionPolicy”);web

//是否启用pool的jmx管理功能, 默认true
config.setJmxEnabled(true);redis

//MBean ObjectName = new ObjectName(“org.apache.commons.pool2:type=GenericObjectPool,name=” + “pool” + i); 默 认为"pool", JMX不熟,具体不知道是干啥的…默认就好.
config.setJmxNamePrefix(“pool”);apache

//是否启用后进先出, 默认true
config.setLifo(true);svg

//最大空闲链接数, 默认8个
config.setMaxIdle(8);spa

//最大链接数, 默认8个
config.setMaxTotal(8);线程

//获取链接时的最大等待毫秒数(若是设置为阻塞时BlockWhenExhausted),若是超时就抛异常, 小于零:阻塞不肯定的时间, 默认-1
config.setMaxWaitMillis(-1);code

//逐出链接的最小空闲时间 默认1800000毫秒(30分钟)
config.setMinEvictableIdleTimeMillis(1800000);xml

//最小空闲链接数, 默认0
config.setMinIdle(0);对象

//每次逐出检查时 逐出的最大数目 若是为负数就是 : 1/abs(n), 默认3
config.setNumTestsPerEvictionRun(3);

//对象空闲多久后逐出, 当空闲时间>该值 且 空闲链接>最大空闲数 时直接逐出,再也不根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
config.setSoftMinEvictableIdleTimeMillis(1800000);

//在获取链接的时候检查有效性, 默认false
config.setTestOnBorrow(false);

//在空闲时检查有效性, 默认false
config.setTestWhileIdle(false);

//逐出扫描的时间间隔(毫秒) 若是为负数,则不运行逐出线程, 默认-1
config.setTimeBetweenEvictionRunsMillis(-1);

JedisPoolConfig config = new JedisPoolConfig(); JedisPool pool = new JedisPool(config, “localhost”,int port);