사용자 도구

사이트 도구


nosql:redis:lettuce

Lettuce - Redis Java Client

Replica

  • spring-data-redis 를 사용하고, AWS AWS ElasticCache 의 replica 를 사용하는 경우에는 org.springframework.data.redis.connection.RedisStaticMasterReplicaConfiguration 를 서버 설정으로 사용해서 모든 replica 를 지정해줘야 한다.
  • AWS ElasticCache 가 아니고 INFO 명령으로 제대로 replica 정보를 알 수 있는 경우에는 그냥 master 주소만 지정해서 RedisStandaloneConfiguration 를 사용해도 되는 듯.
  • ReadFrom 의 설정값이 ANY 를 제외하고는 특정 순서를 따르게 돼 있는데, 이로 인해 오히려 부하 분산이 제대로 안된다. 다음과 같은 형태로 별도의 ReadFrom 구현체를 사용해야 random 부하 분산이 된다(Lettuce 5.2 이상?).
public class ReadFromReplicaUnOrderSensitive extends ReadFrom {
    @Override
    public List<RedisNodeDescription> select(Nodes nodes) {
        return ReadFrom.REPLICA.select(nodes); // 그냥 REPLICA_PREFERRED 가 나아보이기도 하고?
    }
 
    /**
     * default 값이 기본 {@code false} 이긴 하지만 혹시나 모를 코드 변경에 대비하여 명시적 override.
     * @see ReadFrom#isOrderSensitive()
     */
    @Override
    protected boolean isOrderSensitive() {
        return false;
    }
 
}
  • AWS Elastic Cache 의 경우 Read Only endpoint 를 따로 지원해주지만, 이 Read Only Endpoint 가 제대로 분산되어 클라이언트들에게 배분되지 않는 경우도 많이 발생함. 제일 분산률을 높게 하려면 replica 서버를 각자 따로 지정해야함. 다만, 애플리케이션 서버 댓수가 많다면 굳이 이렇게 까지 하지 않아도 분산률이 상당히 높게 됨.

Redis Cluster

Client Side Caching

참조

nosql/redis/lettuce.txt · 마지막으로 수정됨: 2022/11/27 00:39 저자 kwon37xi