inflearn logo
강의

講義

知識共有

非専門家でも理解できるRedis入門・実践(照会性能最適化編)

基本的なSpring Bootプロジェクトの設定方法

스프링 부트에 Redis 적용하기 질문

97

wonderwall09in

投稿した質問数 38

0

안녕하세요 항상 강의 잘 수강하고 있습니다 !

강의를 수강하다 질문이 생겨 여쭤보게 되었습니다.

강의 진행 시에는 Service 계층에서 Redis 설정을 적용시켰는데, Redis 설정은 Service 계층에서 적용하는 것이 일반적일까요 ? Repository나 Controller 계층에서도 걸어줘도 차이가 있는지 궁금해서 여쭤봅니다 !

redis nosql query-tuning performance-tuning

回答 2

0

jscode

안녕하세요 ! 질문 너무 잘 해주셨어요 ~

질문해 주신 내용에 대해 답변드려볼게요 !

 

"강의 진행 시에는 Service 계층에서 Redis 설정을 적용시켰는데, Redis 설정은 Service 계층에서 적용하는 것이 일반적일까요 ?"

->네 ! Redis 캐싱 설정은 Service 계층에 적용하는 것이 일반적이고 권장돼요 !

Service 계층에서 비즈니스 로직이 처리된 후의 최종 결과를 캐싱하기 때문에 가장 효율적이기 때문이에요 !

또한 여러 Controller에서 같은 Service를 호출할 때 캐시를 재사용할 수 있어서 효율성이 높고,

캐시 키 관리도 깔끔하게 비즈니스 로직 단위로 할 수 있어요 !

Controller 계층에 적용하면 HTTP 요청 파라미터나 헤더 등까지 고려해야 해서

캐시 키가 복잡해질 수 있고, Controller는 HTTP 계층의 역할에 집중하는 게 좋기 때문에

캐싱 로직이 섞이면 관심사 분리 측면에서도 좋지 않아요 !

Repository 계층에 적용하는 경우에는 DB 쿼리 결과를 바로 캐싱하게 되는데,

이렇게 되면 비즈니스 로직 처리 전의 원본 데이터만 캐싱되고 페이징이나 정렬 등

다양한 조건마다 별도의 캐시가 생성되어 비효율적일 수 있어요 !

결론적으로 Service 계층에서 비즈니스 로직이 완료된 최종 결과물을 캐싱하는 것이

가장 효율적이고 관리하기도 좋죠 :)

 

추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~

1

wonderwall09in

헉 상세한답변 너무 감사드립니다 새해복많이받으세요 ~~

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. wonderwall09in님, 질문 주셔서 감사합니다.

Spring Boot 애플리케이션에서 Redis를 사용하는 방법에 대해 궁금해 하시는 것 같습니다. 보통 Redis를 통해 처리하는 작업은 캐싱과 관련이 많이 있습니다. 이에 따라, 캐시는 일반적으로 서비스 계층에서 설정하고 사용되는 경우가 많습니다. 이는 비즈니스 로직에 맞춘 캐시 정책을 적용할 수 있기 때문입니다.

Redis 설정의 계층별 적용:

  1. Service 계층:

    • 서비스 계층은 비즈니스 로직을 다루는 공간으로, Redis 캐시는 이 계층에서 주로 관리됩니다. 이는 캐싱하는 데이터와 정책을 비즈니스 로직에 맞게 제어할 수 있기 때문입니다.
  2. Repository 계층:

    • Repository는 데이터베이스와 직접 상호작용하는 계층입니다. 이 계층에서는 캐싱보다는 데이터를 저장하고 조회하는데 최적화되어 있습니다. 따라서, Redis 설정을 직접적으로 사용하는 경우는 드뭅니다.
  3. Controller 계층:

    • Controller는 주로 요청을 처리하고 응답을 반환하는 역할을 합니다. Redis 설정을 이 계층에 직접 적용하는 것은 흔하지 않으며, 서비스 계층을 통해 간접적으로 Redis를 활용합니다.

Redis 설정을 어느 계층에서 적용할지는 애플리케이션의 요구 사항 및 구조에 따라 달라질 수 있습니다. 그러나 대부분의 경우, 효율적인 캐싱을 위해 서비스 계층에 설정하고 활용하는 것이 일반적입니다.

이와 관련된 유사 질문과 답변을 확인해보시면 좋은 참고가 될 것 같습니다:
- Redis 설정의 최적화 전략

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

redis VS valkey

0

200

2

redis 적용을 위한 service 반환값

0

63

2

redis 사용으로 인한 비용

0

241

2

Redis를 적용했음에도 불구하고 조회 성능의 큰 차이가 없고 오히려 더 안좋은 조회속도를 보이는 것 같습니다.

0

144

3

Elastic Cache 에러

0

85

2

Elastic

0

74

2

AWS 리소스 삭제에 관하여

0

74

2

ec2안에서 pull 받는 이유가 뭔가요 ?

0

83

2

Nest.js + Redis 구현 문제

0

677

3

데이터를 안가져와요

0

72

2

Spring Boot 프로젝트에 Redis 셋팅 추가하기에서 13분 질문있습니다.

0

188

2

레디스 환경 셋팅 질문있습니다.

0

99

2

엘라스틱 서치와 레디스의 차이점을 알고 싶습니다.

0

262

2

-parameters

0

128

2

Redis vs Memcached

0

230

2

redis 를 compose 로 묶어준 이유가 궁금합니다.

0

155

2

k6의 결과 해석

0

257

2

Jackson2JsonRedisSerializer에 대한 궁금증

0

233

1

사용된 어노테이션에 관한 질문

0

147

1

Redis 사용 방식에 대해서 질문 있습니다

0

154

1

aws elasticcache redis 툴 접속.

0

220

1

Redis를 사용하는 이유

0

709

2

로컬에서 docker compose 명령어 실행 시

0

275

2

EC2 서버 실행시키기 관련하여

0

428

2