redis pool configの構成パラメータ-JedisPoolConfig


redis pool configの構成パラメータ
1、jedisインスタンスを取得する場合、実際には2つのエラーが発生する可能性があります.一つはpoolです.getResource()は、使用可能なjedisインスタンスが得られません.もう一つはjedisですset/getでエラーが発生しても異常が放出されます.区分を実現するために、instanceがnullであるかどうかによって実現され、空であればinstanceが初期化されていないことを証明し、poolにreturnを与える必要はありません.instanceがnullでない場合、poolに返却する必要があることを証明します.
2、instanceエラーが発生した場合、returnBrokenResourceを呼び出してpoolに返却する必要があります.そうしないと、次回getResourceで得られるinstanceのバッファにデータが存在し、問題が発生する可能性があります.
-------------------------------------------------
JedisPoolの構成パラメータの大部分はJedisPoolConfigの対応する項によって与えられる.
maxActive:poolに割り当てられるjedisインスタンスの数を制御し、pool.getResource()を取得します.付与値が-1の場合、制限はありません.poolがmaxActive個jedisインスタンスを割り当てた場合、poolの状態はexhaustedになります.
maxIdle:poolがidle(アイドル)のjedisインスタンスを最大数個制御します.
whenExhaustedAction:poolのjedisインスタンスがallocatedで完了した場合、poolが取る操作を示します.デフォルトは3種類あります.WHEN_EXHAUSTED_FAIL-->jedisインスタンスがない場合は、NoSuchElementExceptionを直接放出します.WHEN_EXHAUSTED_BLOCK-->は、ブロックされているか、maxWaitに達したときにJedisConnectionExceptionを放出していることを示します.WHEN_EXHAUSTED_GROW-->はjedisインスタンスを新規作成することを表し、つまり設定したmaxActiveが役に立たないことを表す.
maxWait:borrowのjedisインスタンスの場合、最大の待機時間を表し、待機時間を超えた場合、JedisConnectionExceptionを直接投げ出す.
testOnBorrow:borrowのjedisインスタンスの場合、alidate操作を事前に行うかどうか.trueの場合、得られたjedisインスタンスはいずれも使用可能である.
testOnReturn:returnがpoolに与えられた場合、validate操作を事前に行うかどうか.
testWhileIdle:trueの場合、idle object evitorスレッドがidle objectをスキャンし、validateが失敗するとpoolからdropされます.これはtimeBetweenEveictionRunsMillisが0より大きい場合にのみ意味がある.
timeBetweenEveictionRunsMillis:idle object evitorの2回のスキャンの間にsleepが必要なミリ秒数を示します.
numTestsPerEveictionRun:idle object evitorがスキャンするたびに最も多くのオブジェクト数を表します.
minEveictableIdleTimeMillis:1つのオブジェクトがidle状態の最短時間にとどまることを示し、idle object evitorにスキャンされて駆逐される.これはtimeBetweenEveictionRunsMillisが0より大きい場合にのみ意味がある.
softMinEveictableIdleTimeMillis:minEveictableIdleTimeMillisに加えて、少なくともminIdle個のオブジェクトがpoolに入っています.-1の場合、evictedはidle timeに基づいてオブジェクトを駆逐しません.m i n v e v i c tableIdleTimeMillis>0の場合、この設定は意味がなく、timeBetweenEveictionRunsMillisが0より大きい場合にのみ意味があります.
lifo:borrowObjectがオブジェクトを返す場合、DEFAULT_を使用します.LIFO(last in first out、すなわちcacheのような最も頻繁に使用されるキュー)は、FalseであればFIFOキューを表す.
ここで、JedisPoolConfigのパラメータのデフォルト設定は、testWhileIdle=true m i n v i c tableIdleTimeMills=60000 timeBetweenEvenictionRunsMillis=30000 numTestsPerEveictionRun=-1です.
 
 
補足記事:
redis-JedisPoolConfig構成JedisPoolConfig config = new JedisPoolConfig(); // , false ,ture ,  true
config.setBlockWhenExhausted(true);
// ,  DefaultEvictionPolicy( , )
config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");
// pool jmx ,  true
config.setJmxEnabled(true);
//MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i);  "pool", JMX , ... .
config.setJmxNamePrefix("pool");
// ,  true
config.setLifo(true);
// ,  8
config.setMaxIdle(8);
// ,  8
config.setMaxTotal(8);
// ( BlockWhenExhausted), ,  : ,   -1
config.setMaxWaitMillis(-1);
//   1800000 (30 )
config.setMinEvictableIdleTimeMillis(1800000);
// ,  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);
JedisPool pool = new JedisPool(config, "localhost",); int timeout=3000;
new JedisSentinelPool(master, sentinels, poolConfig,timeout);//timeout

  https://www.cnblogs.com/hujihon/p/5313731.html https://www.cnblogs.com/jklk/p/7095067.html