인프런 커뮤니티 질문&답변

psam1017.nodeblack님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)

Spring Boot 프로젝트에 Redis 셋팅 추가하기

LettuceConnectionFactory 를 RedisConnectionFactory 의 빈으로 등록하지 않는 특별한 이유가 있나요?

해결된 질문

24.09.01 21:24 작성

·

66

·

수정됨

0

안녕하세요, 좋은 강의 감사합니다.

 

강의시간 3:10

LettuceConnectionFactory 라는 게 있어서 한 번 들여다봤는데, RedisConnectionFactory 를 구현하는 객체로 보입니다. 이왕이면 RedisConnectionFactory 빈의 구현체로 등록하고, 또 RedisConnectionFactory 를 의존하도록 설계하고 싶은 욕구가 생겨서 그렇게 해봤는데, 일단 별 문제는 안 생긴 것 같습니다.
LettuceConnectionFactory 를 실제로 RedisConnectionFactory 의 구현체로 등록해도 상관없나요? 아니면 혹시나 혹시나, RedisConnectionFactory 의 빈으로 등록하면 안 되는 이유가 있는 건가요?

@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port));
}

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

2024. 09. 04. 09:09

안녕하세요 psam1017.nodeblack님!

외부 일정으로 인해 답장이 조금 늦었네요ㅠㅠㅠㅠ!

질문해주신 내용에 대해 바로 답변 드려볼게요:D

 

말씀해주신 대로 LettuceConnectionFactory보다

추상적인 타입인 RedisConnectionFactory라고 선언하는 것이

객체지향의 확장성 측면에서 훨씬 좋은 선언 방법입니다👍

 

말씀해주신 방법으로 구현하시는 게 더 좋은 방법이니

보여주신 방법으로 구현하셔도 됩니다ㅎㅎ

 

이 외로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 03. 21:25

안녕하세요, 인프런 AI 인턴입니다.

본문에 나와 있는 내용을 토대로 RedisConnectionFactory의 구현체로 LettuceConnectionFactory를 등록하는 것에 대해 말씀드리겠습니다.

Spring Boot는 Lettuce와 Jedis 클라이언트 라이브러리를 모두 지원하며, 이들은 Spring Data Redis를 통해 추상화되어 있습니다. 따라서 LettuceConnectionFactory를 RedisConnectionFactory의 구현체로 사용하는 것은 Spring Boot에서 기본적으로 지원하는 행위입니다. 기본적으로 Spring Boot는 Lettuce를 사용하는데, 이는 비동기 이벤트 기반으로 높은 성능을 제공하기 때문입니다.

다음 코드는 LettuceConnectionFactory를 RedisConnectionFactory 타입의 빈으로 등록하는 예제입니다:

@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
    return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port));
}

이와 관련해 Spring Boot에서 auto-configuration을 통해 LettuceConnectionFactory가 RedisConnectionFactory로 자동 설정되는 것을 확인할 수 있습니다. custom 설정이 필요하지 않는 한, Spring Boot의 auto-configuration이 용이한 방법을 제공합니다.

결론적으로, LettuceConnectionFactory를 RedisConnectionFactory의 구현체로 등록하는 것은 문제가 되지 않으며, 이는 Spring Boot에서 의도한 바와도 일치합니다. 다만, 특별한 설정이 필요한 경우에는 상세한 구성을 통해 요구 사항을 충족시킬 수 있습니다.

참고자료를 보시면 더 도움이 될 것 같습니다:
- 제목: Spring Boot Reference Documentation v3.1.5 > 9. Data > 9.2. Working with NoSQL Technologies > 9.2.1. Redis
- 원문 링크: Spring Boot Reference Documentation