參數 值 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代碼:

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 }