JedisPool可以很好地重復(fù)利用Jedis,減少new的次數(shù)膨疏,從而提高效率
Jedis一般是用單例模式生成
雖然一般的項(xiàng)目開始之前已經(jīng)封裝好JedisPool的配置,但也需要讀懂,方便以后作更改
JedisPool的配置參數(shù)大部分是由JedisPoolConfig的對(duì)應(yīng)項(xiàng)來賦值的吵聪。
-
maxActive
控制一個(gè)pool可分配多少個(gè)jedis實(shí)例劲装,通過pool.getResource()來獲入誓;如果賦值為-1占业,則表示不限制绒怨;如果pool已經(jīng)分配了maxActive個(gè)jedis實(shí)例,則此時(shí)pool的狀態(tài)為exhausted谦疾。 -
maxIdle
控制一個(gè)pool最多有多少個(gè)狀態(tài)為idle(空閑)的jedis實(shí)例南蹂; -
whenExhaustedAction
表示當(dāng)pool中的jedis實(shí)例都被allocated完時(shí),pool要采取的操作念恍;默認(rèn)有三種六剥。
WHEN_EXHAUSTED_FAIL --> 表示無jedis實(shí)例時(shí)晚顷,直接拋出NoSuchElementException;
WHEN_EXHAUSTED_BLOCK --> 則表示阻塞住疗疟,或者達(dá)到maxWait時(shí)拋出JedisConnectionException该默;
WHEN_EXHAUSTED_GROW --> 則表示新建一個(gè)jedis實(shí)例,也就說設(shè)置的maxActive無用策彤; -
maxWait
表示當(dāng)borrow一個(gè)jedis實(shí)例時(shí)栓袖,最大的等待時(shí)間,如果超過等待時(shí)間店诗,則直接拋JedisConnectionException裹刮; -
testOnBorrow
獲得一個(gè)jedis實(shí)例的時(shí)候是否檢查連接可用性(ping());如果為true必搞,則得到的jedis實(shí)例均是可用的必指; -
testOnReturn
return 一個(gè)jedis實(shí)例給pool時(shí),是否檢查連接可用性(ping())恕洲; -
testWhileIdle
如果為true塔橡,表示有一個(gè)idle object evitor線程對(duì)idle object進(jìn)行掃描,如果validate失敗霜第,此object會(huì)被從pool中drop掉葛家;這一項(xiàng)只有在timeBetweenEvictionRunsMillis大于0時(shí)才有意義; -
timeBetweenEvictionRunsMillis
表示idle object evitor兩次掃描之間要sleep的毫秒數(shù)泌类; -
numTestsPerEvictionRun
表示idle object evitor每次掃描的最多的對(duì)象數(shù)癞谒; -
minEvictableIdleTimeMillis
表示一個(gè)對(duì)象至少停留在idle狀態(tài)的最短時(shí)間,然后才能被idle object evitor掃描并驅(qū)逐刃榨;這一項(xiàng)只有在timeBetweenEvictionRunsMillis大于0時(shí)才有意義弹砚; -
softMinEvictableIdleTimeMillis
在minEvictableIdleTimeMillis基礎(chǔ)上,加入了至少minIdle個(gè)對(duì)象已經(jīng)在pool里面了枢希。如果為-1桌吃,evicted不會(huì)根據(jù)idle time驅(qū)逐任何對(duì)象。如果minEvictableIdleTimeMillis>0苞轿,則此項(xiàng)設(shè)置無意義茅诱,且只有在timeBetweenEvictionRunsMillis大于0時(shí)才有意義; -
lifo
borrowObject返回對(duì)象時(shí)搬卒,是采用DEFAULT_LIFO(last in first out瑟俭,即類似cache的最頻繁使用隊(duì)列),如果為False契邀,則表示FIFO隊(duì)列摆寄;