해결된 질문
작성
·
33
0
강의를 들으며 공부하다 궁금한 점이 생겨 질문 드립니다.
초반 부분에서 Redis는 RAM에 데이터를 저장한다고 말씀해주셨습니다.
그리고 장바구니 구현 설명에서 set을 활용하여 쉽게 구현하는 방법을 설명해주셨는데
장바구니라는 것이 담기만 하고 실제 구매로 이어지지 않을 수 있어 데이터를 계속 가지고 있어야 할 필요가 있는 반영구적인 기능이라 생각하는데, TTL 설정을 따로 하지 않는 식으로 구현하면 될지 궁금합니다.
또한, 사용자가 늘어나면 늘어날수록 Redis, 즉 RAM에 저장되는 데이터 또한 늘어날 것이라 생각하는데 이와 관련하여 발생할 수 있는 메모리 문제 같은 것은 없는지 궁금합니다.
답변 2
1
안녕하세요. 좋은 질문 감사드립니다! 먼저 엔지니어링 영역에서 언제나 맞는 정답은 없고, 상황에 맞게 각 기술의 trade-off를 고려하면 적합한 기술을 선택하고 구현하는 것이 중요하다는 점을 말씁드립니다.
말씀 주신 것처럼 장바구니를 반영구적으로 저장해야된다면 Redis 보다는 다른 데이터베이스를 이용하는 편이 나을 수도 있습니다. 강의에서 장바구니 데이터는 언제 유실되어도 문제 없는 임시 데이터로 가정하고 설명 드렸습니다. (실제로 일정 기간이 지나면 장바구니가 삭제되는 서비스도 많이 있습니다.)
맞습니다. Redis 사용시 메모리 사용량을 고려해서 설계해야 합니다. 그렇기 때문에 TTL 없이 데이터를 저장하는 것은 다소 위험할 수 있습니다. 또 데이터 타입에 따라 한 번에 최대로 저장할 수 있는 용량이 제한되어 있는 경우도 있습니다. 저장해야 되는 데이터의 용량이 크다면 다른 NoSQL을 선택하는 것이 나을 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
RookieLsou님께서 질문해 주신 “Redis를 활용한 장바구니 구현”에 대해 답변드리겠습니다.
Redis를 장바구니 구현에 활용할 때, TTL(Time-to-Live)을 설정하지 않는 경우에는 해당 데이터가 영구히 남게 됩니다. 이는 장바구니 데이터가 실제 구매가 이루어질 때까지, 혹은 사용자가 직접 삭제하기 전까지 유지될 수 있음을 의미합니다. 다만, TTL 설정 없이 데이터를 보존할 경우 사용자가 장바구니를 장기 방치할 수 있다는 점, 그리고 이는 불필요한 메모리 사용으로 이어질 수 있다는 점을 고려해야 합니다.
Redis는 기본적으로 메모리 기반의 데이터 저장소로, 저장 가능한 데이터 양이 시스템의 RAM 크기에 의존합니다. 사용자와 데이터가 많아지면 Redis가 관리해야 하는 저장소 크기도 커지기 마련인데요, 이런 경우 다음과 같은 방법을 고려해볼 수 있습니다:
다음이 RookieLsou님의 질문과 유사한 답변으로 도움이 될 수 있는 기존 Q&A 링크입니다. 해당 내용도 검토해 보시길 권장드립니다:
- “Cache와 메모리 최적화”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그렇군요 잘 이해됐습니다. 답변 감사합니다!