인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

신동아님의 프로필 이미지
신동아

작성한 질문수

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

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

작성

·

16

·

수정됨

0

안녕하세요 레디스를 공부하면서 궁금한게 있습니다.

제가 토이프로젝트를 하면서 상품 검색 입력시 버튼 하나씩 누를때마다(이벤트 keyup 사용) 백엔드와 통신하여 입력창 하단에 자동완성 기능창을 만들려고 하고 있습니다.

아무래도 버튼 하나씩 누를때마다 통신해야되니 빠르게 통신해야될 것 같아서 redis를 사용했습니다.

상품 등록할 때 DB와 redis에 저장하고 (redis에는 상품 이름만 저장했습니다.)

입력창 하단의 자동완성은 redis를 통해 상품 이름을 출력하고 출력된 상품이름을 선택시 DB를 통해서 상품 상세정보를 가져오는 식으로 했는데

배운대로라면 Cache Aside 전략과 다른데 이럴때는 어떻게 구성해야되나요?
아니면 SQL 튜닝만 잘해도 굳이 redis는 필요없는건지 궁금합니다.

아무래도 버튼 누를때마다 통신하다보니 SQL은 느릴까봐 싶어 조바심이 나네요ㅠㅠ

 

알아보니 최근검색어나 인기검색어 같은 경우도 redis로 한다고하는데

이런것들도 굳이 출력하자면 DB로만 사용하여 출력이 될텐데 이게 Cache Aside 전략과 어떤 관계가 있는지 감이 안잡힙니다

실무뛰면서 redis를 써본적이 없고 거의 db로만 해결하다보니 redis 사용예시를 잘 모르겠습니다

답변 1

0

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

안녕하세요 동아님!

부하가 어느 정도냐에 따라 다르긴 하겠지만

엄청난 많은 부하를 처리해야 하는 상황이 아니라면

굳이 redis를 사용하지 않으셔도 됩니다!

하지만 이건 실제로 구현해보고 테스트를 해봐야만 알 수 있습니다.

 

만약 redis를 사용하지 않고 SQL 튜닝을 최대한으로 했음에도

성능이 부족한 경우에는 redis를 사용하시면 성능 향상에 큰 도움이 됩니다.

성능 향상 방법은 강의에 나와있는 Redis를 활용한 '조회 성능 최적화' 방식을 활용하시면 됩니다.

 

강의에서의 방식을 활용하면 상품을 등록할 때는 DB에만 저장을 하게 됩니다.

그러다 입력창 하단에 '박'이라고 입력했을 때 그에 맞는 자동 완성에 필요한 데이터가 생기면

Redis를 먼저 조회하게 됩니다.

만약 Redis에 데이터가 없다면 DB로부터 데이터를 조회한 뒤 응답을 하고,

그 응답한 데이터를 Redis에 저장하게 됩니다.

그럼 그 다음에 다시 동일한 입력값인 '박'이라고 입력하게 되면

Redis에 캐싱된 데이터가 있기 때문에 DB를 통해 데이터를 가져오지 않고

Redis를 통해 데이터를 가져올 수 있게 됩니다.


위 방식은 강의에서 설명드린 방식으로 구현할 수 있는 방법입니다!

하지만 강의에서 설명드린 방식 이외에도

다른 방식으로도 구현할 수도 있습니다.

그 방식에 대해서는 아래 링크 같이 첨부해두도록 할게요!

https://tlatmsrud.tistory.com/106#google_vignette

https://jupiny.com/2020/03/29/redis-sorted-set/

신동아님의 프로필 이미지
신동아
질문자

답변 감사합니다! 참조글도 보내주셨네요

열심히 보겠습니다!

신동아님의 프로필 이미지
신동아

작성한 질문수

질문하기