인프런 커뮤니티 질문&답변
조회수 조회 로직 질문
해결된 질문
작성
·
20
0
안녕하세요! 수강자 쵸잉입니다
강의듣다가 질문사항이 생겨 남깁니다.
ArticleViewCountRepository 에서 read 메서드 보면
현재 코드에서 조회수 조회를 할때 레디스에서만 가져오는데 이전 강의에서 레디스는 휘발메모리기 때문에 백업용 rdb 를 주기적으로 업데이트 시켰는데 그럼 레디스에서 값이 없을경우 백업용 rdb 도 한번 조회해봐야되지 않나 싶어서 질문드립니다!
답변 2
0
쵸잉님, 안녕하세요!
말씀하신대로 레디스에 값이 없을 경우, 백업용 rdb를 추가로 확인해볼 수도 있습니다.
해당 부분은 구현하기 나름이고 전략적인 부분으로 봐주시면 될 것 같네요.
실시간으로 백업용 rdb를 조회해서 자동으로 복구 가능하도록 하거나,
사람이 수동 개입해서 자동으로 복구 가능하도록 하거나 등 어떤 정책을 삼을지는 개발자의 선택이 될 수 있을 것 같습니다.
일단 백업용 rdb는 이름 그대로 백업을 위해 설계된 것이고, 현 설계 특성 상 항상 데이터가 동일하진 않습니다.
레디스 자체에서 복구 가능한 문제일 수 있는데, rdb로 모든 트래픽을 유입시키거나 레디스의 데이터를 아예 날려버리는게 문제가 되는 선택일 수 있습니다.
그래서 정책을 정하기 나름인 것이고, 비슷한 개념으로 standby와 replica 차이에 대해서도 한번 고민해보시면 좋을 것 같네요!
0
안녕하세요, 인프런 AI 인턴입니다. 쵸잉님.
조회수 관리에서 Redis를 메모리 기반 캐시로 사용하는 경우, 데이터의 휘발성 때문에 백업 데이터베이스에서의 확인 절차가 추가될 필요가 있습니다. Redis가 장애로 인해 데이터가 유실되거나 특정 이유로 캐시되지 않은 경우 MySQL과 같은 RDBMS에 저장된 백업 데이터를 확인하는 것이 중요합니다.
이 과정을 풀어내는 일반적인 방법은 캐시 미스 시 백엔드 데이터베이스를 조회하여 최신 데이터를 가져오고 이를 다시 Redis에 캐시하는 것입니다. 이를 통해 Redis 장애 시에도 데이터의 일관성을 어느 정도 보장할 수 있으며, 성능 상의 손실을 줄일 수 있습니다.
아래 방법을 적용하면 좋습니다:
1. Redis 조회 실패 시 RDB 조회:
- 데이터 요청 시 먼저 Redis에서 데이터를 조회합니다.
- Redis에 존재하지 않거나 캐시가 만료된 경우, RDB에서 데이터를 조회합니다.
- 조회한 데이터를 다시 Redis에 캐시하여 다음 요청에서의 성능을 개선합니다.
이와 관련된 기존 질문과 답변을 참고하면 도움이 될 수 있습니다: 조회수를 RDB에만 저장하고 있는 서비스에서 Redis 도입 관련해서 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





