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代碼:

 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     }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM