Backend/Spring+Boot

SpringBoot embedded Redis Cluster

findmypiece 2021. 5. 4. 14:48
728x90

SpringBoot 환경에서 embedded Redis 를 구성하는 방법은 많이 나와있다. 그런데 그 방법 대부분이 Single instance 방식이고 나는 실제로 서비스시에는 Redis Cluster 를 사용할거라 embedded Redis도 Cluster로 구성하고 싶었다. 

 

서칭과 여러 시행착오 끝에 jitpack.io/p/tarossi/embedded-redis 여기를 참고해서 구성을 성공할 수 있었다.

 

1. 의존성 추가(Gradle 기준)

dependencies {
    implementation 'com.github.tarossi:embedded-redis:1.5.2'
}

 

2. embedded Redis Bean 설정

@Profile({"local", "test"})
@Component
public class EmbeddedRedis {

	private final List<Integer> msterPorts = Arrays.asList(6370, 6371, 6372);
	private final List<Integer> slavePorts = Arrays.asList(6380, 6381, 6382);

	private Redis redisServer;

	@PostConstruct
	public void startRedis() {

		redisServer = new RedisCluster.Builder()
			.serverPorts(Stream.concat(msterPorts.stream(), slavePorts.stream())
				.collect(Collectors.toList()))
			.build();

		redisServer.start();
	}

	@PreDestroy
	public void stopRedis() {
		Optional.ofNullable(redisServer).ifPresent(Redis::stop);
	}

}

 

위와 같이 하면 local, test Phase 으로 구동시 Redis Server를 localhost:6370,localhost:6371,localhost:6372 와 같이 참조할 수 있다.

728x90

'Backend > Spring+Boot' 카테고리의 다른 글

@RequestMapping consumes, produces  (0) 2021.07.07
SpringBoot Redis Cluster Lettuce 설정  (0) 2021.05.04
spring cloud config 비활성화  (0) 2021.05.04
Request 정보 Logging 하기  (0) 2021.05.04
크로스 도메인 이슈  (0) 2021.04.29