2016-07-13 7 views
1

그래서 일부 데이터를 캐시하기 위해 Spring-Data-Redis을 사용하는 프로젝트가 있습니다. Spring-Data-Redis은 Bean 구성을 사용하여 Jedis와 설정됩니다.JedisPoolConfig 매개 변수 사용 * blockWhenExhausted *

내 캐싱 및 앱의 동작을 제어하기 위해 수정할 수있는 JedisPoolConfig 매개 변수를 찾았습니다.

구성 가능한 속성의 일부인 속성 blockWhenExhausted의 사용을 알고 싶습니다. 기본값은 true이고,이 기본 값은 어떤 동작을 나타 냅니까? 값을 false으로 변경하면 어떤 동작이 나타 납니까?

답변

1

값 BaseGenericObjectPool.getBlockWhenExhausted()가 true 인 경우에만 적용되는 특정 대기 시간을 이용하여 풀에서 객체를 빌려 GenericObjectPool.borrowObject(long borrowMaxWaitMillis)

의 동작을 변경한다. 당신이 borrowMaxWaitMillis로 지정된 시간이 사용되지 않고 사용할 수있는 풀에서 유휴 jedis 연결이 될 때까지 borrowObject 호출이 차단됩니다 falseblockWhenExhausted를 설정할 때

의미한다.

풀이 (사용 가능한 유휴 인스턴스와 새로운 것을 만들 수없는 용량) 고갈되지 않는 경우,이 메소드는 다음 중 하나를 블록 (BaseGenericObjectPool.getBlockWhenExhausted()가 true 인 경우) 또는 예외 : NoSuchElementException (있는 경우 BaseGenericObjectPool.getBlockWhenExhausted (던져)

그러나 흥미롭게 나는 JedisPool 구현이 실제로 borrowObject(long borrowMaxWaitMillis) 방법을 사용하고 있음을 볼 수 없었다) false입니다. getResource (in the version 3.0.0-SNAPSHOT) 동안 borrowObject (매개 변수 없음)가 호출 된 것을 볼 수있었습니다. 설명 된 동작이 JedisPool에도 적용되는지 확실하지 않습니다.