Redis学習ノート——Jedis、JedisPool
8838 ワード
Jarパッケージのインポート
(1)commons-pool-1.6.JAr、プール化に必要なcommonsパッケージ.(2)jedis-2.1.0.jar,jedisのJarバッグ.
ジャンクションJedis
(1)まずJedisのサーバをオンにし,端末で6379ポートのJedisサーバを正常にオンにする必要がある.
これによりJedisに接続でき、意外にも
JedisPoolの使用
接続の初期化は通常、リソースを節約するためにJedisPoolを使用してリソースを消費する操作です.通常、プールでは単一のモードが使用されます.コードは次のとおりです.
このうち
JedisPoolConfig
JedisPoolの構成パラメータの大部分はJedisPoolConfigの対応する項によって与えられる. です.
一般的な操作
Jedisをインスタンス化し、その関数名はすべてRedis端末モードと似ており、Eclipseのコード補完を利用して、対応する関数名を見つけることができるはずです.
(1)commons-pool-1.6.JAr、プール化に必要なcommonsパッケージ.(2)jedis-2.1.0.jar,jedisのJarバッグ.
ジャンクションJedis
(1)まずJedisのサーバをオンにし,端末で6379ポートのJedisサーバを正常にオンにする必要がある.
public class TestPing {
public static void main(String[] args){
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println(jedis.ping());
}
}
これによりJedisに接続でき、意外にも
PONG
に戻ることができます.JedisPoolの使用
接続の初期化は通常、リソースを節約するためにJedisPoolを使用してリソースを消費する操作です.通常、プールでは単一のモードが使用されます.コードは次のとおりです.
public class JedisPoolUtil {
private JedisPoolUtil(){}
public static volatile JedisPool jedisPool = null;
public static JedisPool getJedisPoolInstance(){
if(null == jedisPool){
synchronized (JedisPoolUtil.class) {
if(null == jedisPool){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxActive(1000);
poolConfig.setMaxIdle(32);
poolConfig.setMaxWait(1000*100);
poolConfig.setTestOnBorrow(true);
jedisPool = new JedisPool(poolConfig ,"127.0.0.1",6379);
}
}
}
return jedisPool;
}
public static void release(JedisPool jedisPool,Jedis jedis){
if(null != jedis){
jedisPool.returnResourceObject(jedis);
}
}
}
このうち
の単一モードを用いて,スレッドの安全な効率的な検査を保証した.またreleaseメソッドは,不要な接続リソースを接続プールに戻すためである.JedisPoolConfig
JedisPoolの構成パラメータの大部分はJedisPoolConfigの対応する項によって与えられる.
maxActive
:1つのpoolがどれだけのjedisインスタンスを割り当てることができるかを制御し、poolを通過する.getResource()を取得します.付与値が-1の場合、制限はありません.poolがmaxActive個jedisインスタンスを割り当てた場合、poolの状態はexhaustedになります.maxIdle
:1つの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
:jedisインスタンスを取得するときに接続の可用性を確認するかどうか(ping()trueの場合、得られたjedisインスタンスはいずれも使用可能である.testOnReturn
:return jedisインスタンスがpoolに与えられた場合、接続の可用性(ping()を確認するかどうか.testWhileIdle
:trueの場合、idle object evitorスレッドがidle objectをスキャンしていることを示し、validateが失敗すると、このobjectはpoolからdropされます.これはtimeBetweenEveictionRunsMillisが0より大きい場合にのみ意味がある.timeBetweenEvictionRunsMillis
:idle object evitorの2回のスキャン間にsleepが必要なミリ秒数を示す.numTestsPerEvictionRun
:idle object evitorがスキャンするたびに最も多いオブジェクト数を表す.minEvictableIdleTimeMillis
:1つのオブジェクトが少なくともidle状態にとどまる最短時間を表し、idle object evitorによってスキャンされ、駆逐される.これはtimeBetweenEveictionRunsMillisが0より大きい場合にのみ意味がある.softMinEvictableIdleTimeMillis
: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 minEveictableIdleTimeMills=60000 timeBetweenEvenitionRunsMillis=30000 numTestsPerEveictionRun=-1 一般的な操作
Jedisをインスタンス化し、その関数名はすべてRedis端末モードと似ており、Eclipseのコード補完を利用して、対応する関数名を見つけることができるはずです.