redis.clients.jedis.exceptions.JedisExhaustedPoolException는 : 풀이 소모하기 때문에 리소스를 가져올 수 없습니다

JedisPool을하는 것은 정말 다음 질문으로 발생하는 많은 문제가, 여기에 솔루션입니다 때 가상 머신에 구성된 레디 스를 사용하는 많은 사람들이있을 수 있으므로, 반드시 상대를 모두 사용하지, 나는 구성에 CentOS 서버 레디 스 인 사용, 문제의 원인 여기에서,이 지역의 경우 때문에, 다음, 당신은 문장을 주석 처리하려면 기본 구성 바인드 127.0.0.1 및 원격 구성 연결입니다 redis.conf, 보호 모드로 기본이 아닌 로컬 연결? 우리는 방문의 목적을 달성하기 위해 다른 구성을 암호를 설정하거나 수정해야합니다.

예를 들어, 도움말을 따라

스레드 "주요"redis.clients.jedis.exceptions.JedisDataException의 예외 : DENIED 레디 스가 실행되는 보호 때문에 모드 보호 모드가 활성화되어, 더 바인드 주소가 지정되지 않았에는 인증 암호는 클라이언트에 요청하지 않습니다. 에서  모드 연결 만 루프백에서 허용하는 인터페이스 . 당신은 당신이 다음 방법 중 하나를 채택 할 수있다 레디 스 외부 컴퓨터에서 연결하려면 :

 1) 그냥하지 않도록 보호 루프백에서 명령 '더 CONFIG의 SET에게 보호 모드'를 전송하지 모드 인터페이스를 동일한 호스트 서버에서 레디 스에 연결하여 실행 그러나 SURE 레디 스 인터넷에서 공개적으로 액세스 할 수 없습니다 MAKE 경우당신은 어떻게 그렇게. 할 CONFIG 재 작성을 사용하여 변경을 영구적으로. 
    
2) 또는 그냥 해제 할 수 있습니다 보호 레디 스 구성 파일을 편집하고 설정 모드를 보호 '아니오'로 모드 옵션을 한 다음 서버를 다시 시작. 
    
당신은 단지 서버를 수동으로 시작한 경우 3) 에 대한 테스트는 '--protected 모드 없음'으로 다시 시작 옵션을 선택합니다. 
    
4) 설정 바인드 주소 또는 인증 암호를 입력합니다. 참고 : 당신은해야  위해 위의 것들 중 하나를 위해 외부로부터의 연결을 수락 시작하는 서버.

 

마이너 해결이 오류 :

redis.clients.jedis.exceptions.JedisExhaustedPoolException는 : 풀이 고갈되기 때문에 리소스를 가져올 수 없습니다 
    redis.clients.jedis.util.Pool.getResource (Pool.java:53)에서 
    redis.clients.jedis.JedisPool.getResource에서 ( JedisPool.java:234) 
    com.jedis.jedistest.PoolTest.main (PoolTest.java:15)에서 
java.util.NoSuchElementException :에 의한 없습니다 객체의 유효성을 검사 
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject에서 (GenericObjectPool.java:479) 
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject (GenericObjectPool.java:346)에서 
    redis.clients.jedis.util.Pool.getResource에서 (Pool.java:50) 
    ... 2 개 더

 

다음, 솔루션은 적용되지 않습니다 찾기 위해 구글을 바이 수명이 다한가 원격 액세스에 대한 암호를 설정하지 않은 아마 때문에, 생각? 그냥 여기 토론을 보려면, https://www.oschina.net/question/579073_113004

원래 진정한에서 false로하고, 액세스 할 수 있습니다 (123) 레디 스 암호를 설정, 그래서 (false)를 poolConfig.setTestOnBorrow됩니다.

 

 

원래 비디오 링크는 다음과 같다 : https://www.bilibili.com/video/av51989396/?p=28

코드 노크 내부 빛나고 있지만, 일부 패키지의 다른 버전은 몇 가지 방법이 변경되었습니다.

JedisPoolUtil.java

패키지 com.jedis.jedistest, 

가져 오기 redis.clients.jedis.Jedis,
 가져 오기 redis.clients.jedis.JedisPool,
 가져 오기 redis.clients.jedis.JedisPoolConfig; 

// 이중 잠금 Chcek 
공공  클래스 JedisPoolUtil { 

    개인  정적  휘발성 JedisPool jedisPool = 널 (null) ; 

    // 생성자 민영화 
    개인 JedisPoolUtil는 () { 
    } 

    // 예시의 방법에 의해 풀에 반환 
    공개  정적 JedisPool getJedisPoolInstance () { 

        IF (  == jedisPool) {
             // 로크 대상
            동기화 (. JedisPoolUtil 클래스 ) {
                 경우 (  == jedisPool) { 

                    JedisPoolConfig poolConfig = 새로운 JedisPoolConfig ();
                    // poolConfig.setMaxTotal (1000); 
                    poolConfig.setMaxTotal (1000 ); 
                    poolConfig.setMaxIdle ( 32 ); 
                    poolConfig.setMaxWaitMillis ( * 1000 100 ); 
                    poolConfig.setTestOnBorrow ( 거짓 );
                //     poolConfig.setTestOnBorrow (TRUE);

                    jedisPool = 새로운 JedisPool (poolConfig "233.233.223.223", 6666 ); 
                } 
            } 
        } 

        반환 jedisPool을; 

    } 

    공공  정적  무효 릴리스 (JedisPool jedispool, Jedis jedis) {
         경우 ( 널 (null) =! jedis) {
             // jedisPool.returnResource (jedis) ---> jedis.close ();
            // 升级版的jedis用가까운来替代returnResource?
             // jedispool.getResource (); 
            jedis.close (); 
        } 
    } 
}

 

PoolTest.java

1 개  패키지 com.jedis.jedistest;
2  
 수입 redis.clients.jedis.Jedis;
4  수입 redis.clients.jedis.JedisPool;
5  
6  공중  클래스 PoolTest {
 7  
8      공용  정적  무효 메인 (문자열 []에 args) {
 9      
10          JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance ();
11          Jedis jedis = ;
12              
13          
14          시도 {
 15              jedis = jedisPool.getResource ();
(16)             jedis.auth ( "123" );
17              jedis.set ( "K1", "siyi" );
18          } 캐치 (예외 E) {
 19              e.printStackTrace ();
20          } 마지막 {
 21              JedisPoolUtil.release (jedisPool, jedis);
22          }
 23  
24      }
 25  
26 }

 

추천

출처www.cnblogs.com/Guhongying/p/11222314.html