2013-08-07 3 views
3

(Jedis를 사용하여) Redis 서버에 연결하는 긴 프로세스를 실행했습니다. Redis를 실행하는 시스템을 재부팅하지 않거나 Redis 서버를 다시 시작하지 않는 한 모든 것이 올바르게 작동합니다. 재부팅하거나 다시 시작하면 연결이 끊어집니다. Redis/Jedis에서이 사용 사례를 처리하는 표준 방법이 있습니까? 아니면이 논리를 모든 고객에게 직접 적용해야합니까?재부팅 후 Redis로 재 연결

답변

4

레디 스 실패/연결이 다운되거나 프로세스가 활성 상태로 유지하면서 연결을 삭제하거나 레디 스,이 경우
떨어졌다. 프로세스가 제대로 연결되도록하려면 jedis connection/pool config에서 testOnBorrow=true을 사용하십시오. Jedis는 사용하기 전에 'PING'으로 각 연결을 테스트합니다. redis가 응답하지 않으면 연결이 취소되고 다른 연결을 시도합니다.

기계 재부팅/다시 시작 (안 레디 스)
응용 프로그램 노드가 실패 할 경우 또는 재부팅, 당신의 "프로세스"(즉, 당신이 원하는 동작 인 경우), 또는 누군가가 수동으로 시작 재부팅시 자동으로 다시 시작하도록 구성해야 . 두 경우 모두 실제 작업을하기 전에 새 jedis 연결을 생성하고 초기화하는 프로세스가 필요합니다 ... 그 외에는 무엇이 필요합니까?

+0

"프로세스가 실제 작업을 수행하기 전에 새 jedis 연결을 생성하고 초기화합니다." Redis 클라이언트 프로세스가 RedisPool에서 Redis에서 무언가를하고 싶을 때마다 새로운 리소스를 얻는다는 뜻입니까? –

+0

맞아요. 클라이언트 노드가 다시 시작되면 jedis 풀이 자동으로 다시 초기화되고 프로세스가 이미 해당 부분을 수행하고 있어야합니다. 맞습니까? – raffian

+1

클라이언트 노드를 다시 시작하지 않습니다. Redis 물리적 노드의 하드 재부트로 인해 Redis 서버가 다시 시작됩니다. JedisPool (클라이언트 측에서)이 여전히 다시 초기화됩니까? –

관련 문제