redis《三》连接池配置参数
参数 值 setTestWhileIdle() 在空闲时检查有效性 true setMinEvictableIdleTimeMillis() 连接最小空闲时间 1800000L setTimeBetweenEvictionRunsMillis() 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 30000 setNumTestsPerEvictionRun() 每次释放连接的最大数目 3 setBlockWhenExhausted(boolean blockWhenExhausted) 当池中的资源耗尽时是否进行阻塞,设置false直接报错,true表示会一直等待,直到有可用资源 setEvictionPolicyClassName(String evictionPolicyClassName) 设置逐出策略,默认策略为 “org.apache.commons.pool2.impl.DefaultEvictionPolicy” setFairness(boolean fairness) 当从池中获取资源或者将资源还回池中时 是否使用java.util.concurrent.locks.ReentrantLock.ReentrantLock 的公平锁机制,默认为false setJmxEnabled 设置是否启用JMX,默认true setJmxNameBase(String jmxNameBase) 设置JMX基础名 setJmxNamePrefix(String jmxNamePrefix) 设置JMX前缀名,默认值pool setLifo(boolean lifo) 设置连接对象是否后进先出,默认true setMaxIdle(int maxIdle) 设置最大空闲连接数,默认为8 setMaxTotal(int maxTotal) 设置最大连接数,默认18个 setMaxWaitMillis(long maxWaitMillis) 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) 设置连接最小的逐出间隔时间,默认1800000毫秒 setMinIdle(int minIdle) 设置无连接时池中最小的连接个数,默认连接0 setNumTestsPerEvictionRun(int numTestsPerEvictionRun) 每次逐出检查时,逐出连接的个数 setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis) 对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 setTestOnBorrow(boolean testOnBorrow) 从池中获取连接时是否测试连接的有效性,默认false setTestOnCreate(boolean testOnCreate) 在连接对象创建时测试连接对象的有效性,默认false setTestOnReturn(boolean testOnReturn) 在连接对象返回时,是否测试对象的有效性,默认false setTestWhileIdle(boolean testWhileIdle) 在连接池空闲时是否测试连接对象的有效性,默认false setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) 设置连接对象有效性扫描间隔,设置为-1,则不运行逐出线程
java代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 JedisConnectionFactory jedisConnectionFactory() { 2 3 JedisPoolConfig jedisPoolConfig=new JedisPoolConfig(); 4 5 // //设置是否后进先出 默认为true ,false为FIFO先进先出 6 // jedisPoolConfig.setLifo(true); 7 // //在连接对象创建时测试连接对象的有效性,默认false 8 // jedisPoolConfig.setTestOnCreate(false); 9 // //公平机制 默认为false 10 // jedisPoolConfig.setFairness(false); 11 // //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true 12 // jedisPoolConfig.setBlockWhenExhausted(true) ; 13 // // 默认为空 14 // jedisPoolConfig.setJmxNameBase(null); 15 // //默认为pool 16 // jedisPoolConfig.setJmxNamePrefix("pool"); 17 // //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数) 18 // jedisPoolConfig.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy") ; 19 //最大连接数, 默认8个 20 jedisPoolConfig.setMaxTotal(8); 21 //最大空闲连接数, 默认8个 22 jedisPoolConfig.setMaxIdle(8); 23 //每次测试运行驱逐数目 默认为3个线程 24 jedisPoolConfig.setNumTestsPerEvictionRun(2); 25 //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 26 jedisPoolConfig.setMaxWaitMillis(6000);//6s 27 //驱逐线程关闭的超时时间,默认10秒 28 jedisPoolConfig.setEvictorShutdownTimeoutMillis(15000) ; 29 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 30 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 31 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 32 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 33 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 34 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 35 //是从连接池中取出是检查连接是否失活。默认false(节省性能) 36 //若testOnBorrow属性设置为true,从连接池中获取对象时,会进行检查,检查不通过,会从连接池中移走并销毁。 37 //检查是通过PooledObjectFactory接口的validateObject方法完成。Jedis客户端,提供JedisFactory对象,用于校验。若ping不通,则校验失败。 38 //JedisFactory对象,是在连接池创建时,构造。 默认为false(节省性能) 39 // jedisPoolConfig.setTestOnBorrow(false);//一搬都为默认, 40 //若testOnReturn属性设置为true,归还连接时,会进行检查,检查不通过,销毁。 默认为false(节省性能) 41 // jedisPoolConfig.setTestOnReturn(false);//一搬都为默认, 42 43 44 //失效连接主要通过testWhileIdle保证,如果获取到了不可用的数据库连接,一般由应用处理异常。 45 //在检查闲置连接时同时检查连接可用性 默认false 这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义; 46 jedisPoolConfig.setTestWhileIdle(true); 47 // 在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。 48 // 如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义, 49 // 且只有在timeBetweenEvictionRunsMillis大于0时才有意义; 50 //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 51 jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(30000);//15s一次 52 53 //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 30000 54 jedisPoolConfig.setTimeBetweenEvictionRunsMillis(60000); 55 // //连接最小空闲时间 1000L * 60L * 30L; 默认半小时(单位毫秒) 56 // jedisPoolConfig.setMinEvictableIdleTimeMillis(1800000);//setSoftMinEvictableIdleTimeMillis与setSoftMinEvictableIdleTimeMillis和setTestWhileIdle只能存在一个 57 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 58 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 59 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 60 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 61 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 62 //》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 63 64 // Only 2.6.0 applications set this 65 // jedisPoolConfig.setEvictionPolicy(EvictionPolicy<T> evictionPolicy) ; 66 67 JedisConnectionFactory factory = new JedisConnectionFactory(redisClusterConfiguration(), jedisPoolConfig); 68 return factory; 69 }
一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰