org.springframework.data.redis.connection.RedisStaticMasterReplicaConfiguration
를 서버 설정으로 사용해서 모든 replica 를 지정해줘야 한다.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; } }
readFrom
설정을 할 것. 그래야 replica 에서 데이터를 읽는다.enablePeriodicRefresh
설정. 10초?enableAllAdaptiveRefreshTriggers
: on, 이 경우 MOVED
, ACK
등 지나치게 이벤트가 많이 발생하는 경우 성능저하가 있을 수 있음.6.06
버전 이전의 경우 LettuceConnectionFactory
Spring Bean 이 올바로 종료 안되는 문제 있음.