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

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

RookieLsou님의 프로필 이미지
RookieLsou

작성한 질문수

실전! Redis 활용

장바구니 구현 관련

해결된 질문

작성

·

33

0

강의를 들으며 공부하다 궁금한 점이 생겨 질문 드립니다.

초반 부분에서 Redis는 RAM에 데이터를 저장한다고 말씀해주셨습니다.

그리고 장바구니 구현 설명에서 set을 활용하여 쉽게 구현하는 방법을 설명해주셨는데

  1. 장바구니라는 것이 담기만 하고 실제 구매로 이어지지 않을 수 있어 데이터를 계속 가지고 있어야 할 필요가 있는 반영구적인 기능이라 생각하는데, TTL 설정을 따로 하지 않는 식으로 구현하면 될지 궁금합니다.

  2. 또한, 사용자가 늘어나면 늘어날수록 Redis, 즉 RAM에 저장되는 데이터 또한 늘어날 것이라 생각하는데 이와 관련하여 발생할 수 있는 메모리 문제 같은 것은 없는지 궁금합니다.

     

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. 좋은 질문 감사드립니다! 먼저 엔지니어링 영역에서 언제나 맞는 정답은 없고, 상황에 맞게 각 기술의 trade-off를 고려하면 적합한 기술을 선택하고 구현하는 것이 중요하다는 점을 말씁드립니다.

 

  1. 말씀 주신 것처럼 장바구니를 반영구적으로 저장해야된다면 Redis 보다는 다른 데이터베이스를 이용하는 편이 나을 수도 있습니다. 강의에서 장바구니 데이터는 언제 유실되어도 문제 없는 임시 데이터로 가정하고 설명 드렸습니다. (실제로 일정 기간이 지나면 장바구니가 삭제되는 서비스도 많이 있습니다.)


  2. 맞습니다. Redis 사용시 메모리 사용량을 고려해서 설계해야 합니다. 그렇기 때문에 TTL 없이 데이터를 저장하는 것은 다소 위험할 수 있습니다. 또 데이터 타입에 따라 한 번에 최대로 저장할 수 있는 용량이 제한되어 있는 경우도 있습니다. 저장해야 되는 데이터의 용량이 크다면 다른 NoSQL을 선택하는 것이 나을 수 있습니다.

RookieLsou님의 프로필 이미지
RookieLsou
질문자

그렇군요 잘 이해됐습니다. 답변 감사합니다!

0

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

RookieLsou님께서 질문해 주신 “Redis를 활용한 장바구니 구현”에 대해 답변드리겠습니다.

1. TTL을 설정하지 않고 장바구니를 반영구적으로 사용할 수 있을까요?

Redis를 장바구니 구현에 활용할 때, TTL(Time-to-Live)을 설정하지 않는 경우에는 해당 데이터가 영구히 남게 됩니다. 이는 장바구니 데이터가 실제 구매가 이루어질 때까지, 혹은 사용자가 직접 삭제하기 전까지 유지될 수 있음을 의미합니다. 다만, TTL 설정 없이 데이터를 보존할 경우 사용자가 장바구니를 장기 방치할 수 있다는 점, 그리고 이는 불필요한 메모리 사용으로 이어질 수 있다는 점을 고려해야 합니다.

2. 사용자가 많아질 때 발생할 수 있는 메모리 문제에 대한 대책

Redis는 기본적으로 메모리 기반의 데이터 저장소로, 저장 가능한 데이터 양이 시스템의 RAM 크기에 의존합니다. 사용자와 데이터가 많아지면 Redis가 관리해야 하는 저장소 크기도 커지기 마련인데요, 이런 경우 다음과 같은 방법을 고려해볼 수 있습니다:

  • 메모리 최적화: Redis 설정을 통해 메모리 사용을 최적화하거나, 필요 없는 데이터를 주기적으로 삭제하여 메모리를 관리할 수 있습니다.
  • 데이터 수명 관리: 빈번하게 사용되는 데이터와 그렇지 않은 데이터를 구분하고, 일정 시간이 지나면 자동으로 삭제되도록 TTL을 설정하는 것도 좋은 방법입니다.
  • 스케일 아웃: Redis Cluster를 사용하여 노드를 추가하고, 각각의 노드가 일부 데이터를 처리하도록 분산된 아키텍처를 구축할 수 있습니다.
  • 데이터 베이스와 하이브리드 사용: 장기적인 보관이 필요한 데이터는 관계형 데이터베이스에 저장하고, Redis는 일시적이거나 고속 조회가 필요한 데이터만 관리하도록 하는 방식도 고려할 수 있습니다.

다음이 RookieLsou님의 질문과 유사한 답변으로 도움이 될 수 있는 기존 Q&A 링크입니다. 해당 내용도 검토해 보시길 권장드립니다:
- “Cache와 메모리 최적화”

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

RookieLsou님의 프로필 이미지
RookieLsou

작성한 질문수

질문하기