프로그래밍/ETC

[ElasticCache] Redis Cluster command execute 에러

개요

ElasticCahce for Redis로 클러스터를 구성하고 SpringBoot에 연동을 하는 작업을 했다.

연동 확인 하고 api를 돌려봤는데 

 

org.springframework.data.redis.RedisSystemException: Error in execution... 중략

이 나오면서 트랜잭션이 자꾸 실패가 났었다.

 

원인

로컬에서 Redis Connection Factory에 기본 StandAlone으로 설정이 되어있었다.

@Bean
public LettuceConnectionFactory lettuceConnectionFactory() {
   return new LettuceConnectionFactory(host, port);  <- LettueceStandAlone으로 팩토리생성됨
}

 

 

해결

ClusterConfiguration으로 팩토리를 생성해주면 된다.

@Bean
public LettuceConnectionFactory lettuceConnectionFactory() {
   RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration();
   clusterConfiguration.clusterNode(host, port);
   LettuceClientConfiguration clientConfiguration = LettuceClientConfiguration.builder()
      .clientOptions(ClientOptions.builder()
         .socketOptions(SocketOptions.builder()
            .connectTimeout(Duration.ofMillis(5000L)).build())
         .build())
      .commandTimeout(Duration.ofSeconds(5000L))
      .build();
   return new LettuceConnectionFactory(clusterConfiguration, clientConfiguration);
}

 

728x90