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サーバを正常にオンにする必要がある.
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のコード補完を利用して、対応する関数名を見つけることができるはずです.