2017-01-04 6 views
0

우리는 redis 캐시가 데이터베이스 MySQL과 함께 구현 된 스프링 어플리케이션을 가지고 있습니다. 여기서 우리는 redis 캐시를 사용하여 매번 데이터베이스에 접속하는 대신 서버 유효성 검증을위한 임시 값을 저장하므로 데이터베이스 성능이 저하 될 때마다 데이터베이스 호출을 수행합니다.봄 부팅시 Redis 캐시 꺽쇠 수신자 어떻게 알아야 redis 캐시 최대입니까?

스프링 부트 액션 엔드 포인트 에 갑자기 내 redis 캐시 서버가 멈추는 경우 내 문제를 설명하고, 내 redis 캐시 서버가 다운되었다는 알림을받는 방법을 알고 싶습니다. 따라서 redis 캐시 리스너 컨텍스트 또는 이와 유사한 것을 사용하여 알림을 얻으려면 solution/example Java 응용 프로그램이 필요합니다.

귀중한 해결책은 우리에게 많은 도움이됩니다. 미리 감사드립니다.

답변

0

그런 식으로는 Redis가 작동하지 않습니다. 사실, 원격 서비스는 애플리케이션이 다운되었다고 애플리케이션에 알리지 않습니다. 일반적으로 반대 방향입니다. 소비하는 서비스에 다소 복잡한 클라이언트를 사용하여 액세스하는 경우 클라이언트의 기능을 이용할 수 있습니다.

I/O를 실행하거나 스레드를 모니터링하는 비동기 클라이언트가 여기에서 도움이 될 수 있습니다. 더 구체적으로, 그것은 당신이 Spring Boot와 Redis에서 사용하고있는 클라이언트에 달려 있습니다. Jedis은 요청에 따라 반응하는 일반 클라이언트입니다. Lettuce는 특정 연결 이벤트에 호출되는 RedisConnectionStateListener을 등록 할 수 있습니다와 같은 연결로/해제 :

RedisClient redisClient = …; 

redisClient.addListener(new RedisConnectionStateListener() { 
    @Override 
    public void onRedisConnected(RedisChannelHandler<?, ?> redisChannelHandler) { 

    } 

    @Override 
    public void onRedisDisconnected(RedisChannelHandler<?, ?> redisChannelHandler) { 

    } 

    @Override 
    public void onRedisExceptionCaught(RedisChannelHandler<?, ?> redisChannelHandler, Throwable throwable) { 

    } 
}); 

는 개인 필드로 LettuceConnectionFactory에서 RedisClient 조금 까다로운 일이 될 수도 있습니다 검색, 봄 데이터 레디 스를 사용

. 따라서 반사가 필요합니다.