복붙노트

[REDIS] 구성 Jedis 시간 제한

REDIS

구성 Jedis 시간 제한

나는, 여기에 내가 무엇을 시도했다입니다)를 .hgetall을 (완료하는 데 문제가 있습니다 :

Jedis jedis = new Jedis(REDIS_MASTER_NODE);
jedis.connect();
jedis.configSet("timeout", "30");

Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash);

여기에 내가 무엇을 얻을 :

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
    at redis.clients.jedis.Protocol.process(Protocol.java:79)
    at redis.clients.jedis.Protocol.read(Protocol.java:131)
    at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199)
    at redis.clients.jedis.Jedis.hgetAll(Jedis.java:851)

이 문제를 해결 :

Jedis jedis = new Jedis(REDIS_MASTER_NODE, 6379, 1800);

해결법

  1. ==============================

    1.당신이 Jedis 연결 시간 제한을 설정하기 만 원하는 경우에, 당신은 그것을 위해 만든 특별한 생성자를 사용하여 수행해야합니다

    당신이 Jedis 연결 시간 제한을 설정하기 만 원하는 경우에, 당신은 그것을 위해 만든 특별한 생성자를 사용하여 수행해야합니다

    public Jedis(final String host, final int port, final int timeout)
    

    당신이하고있는 것은 jedis에서 레디 스 설정에 시간 제한을 설정합니다. 레디 스 60 초 후에 유휴 클라이언트 연결을 닫는 것을 의미합니다 60 시간 초과 CONFIG SET를하는. 당신이 Jedis에서 예외가 이유의 그.

  2. ==============================

    2.이 xetorthio의 대답에 확장의 약간이지만, 여기에 JedisPool와 함께 사용하기위한 유사한 접근 방법이다. (주의 할 :이 직접 Jedis 버전 2.6.2 코드를보고 라이브 유스 케이스에서 테스트되지 않았습니다에서 나의 이해를 기반으로합니다.)

    이 xetorthio의 대답에 확장의 약간이지만, 여기에 JedisPool와 함께 사용하기위한 유사한 접근 방법이다. (주의 할 :이 직접 Jedis 버전 2.6.2 코드를보고 라이브 유스 케이스에서 테스트되지 않았습니다에서 나의 이해를 기반으로합니다.)

        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxWaitMillis(writeTimeout);
        JedisPool pool = new JedisPool(jedisPoolConfig, redisHost, port, readTimeout);
    

    writeTimeout는 쓰기 작업을 기다리는 풀에서 Jedis 리소스에 대한 최대 시간입니다.

    readTimeout 풀 생성자에 지정된 소켓이,보다 구체적인 세부 사항은 java.net.Socket.setSoTimeout을 참조 읽기 대기 시간입니다.

  3. ==============================

    3.몇 가지 고려해야 할 :

    몇 가지 고려해야 할 :

  4. from https://stackoverflow.com/questions/14993644/configure-jedis-timeout by cc-by-sa and MIT license