안녕하세요 이번 글은 시간대별로 클릭된 상품, 팔린 상품 TOP 10을 구현하는 과정을 적은 글입니다.

Untitled

요구사항

구현

TOP 10순위를 제공하는 서비스는 다음과 같은 과정입니다.

  1. TOP 10정보를 저장
    1. AOP를 통해서 Redis의 Sorted Set에 저장하여 데이터를 축적
  2. 스케줄러를 2시간마다 돌려서 정보 초기화
    1. 클릭 상품, 팔린 상품을 MongoDB에 저장하고 SortedSet을 초기화

문제점

그런데, 실시간 정보가 초기화되면 문제점이 상품들이 클릭수와, 판매수가 0개로 되어서 보일 정보가 없을 수도 있다는 점입니다.

그래서 저는 축적된 데이터를 보여주는 방법을 생각했습니다.

생각

Untitled

2시간마다 스케줄러가 돌기 때문에 2시간마다 초기화가 됩니다. 그래서 데이터가 없는 상황을 방지하기 위해 Cache 데이터 TTL을 1시간으로 두고 1시간 동안 초기화된 SortedSet에 데이터를 적재시켜 어느 정도 적재된 데이터를 보여줍니다.

즉 유저는 2시간마다 업데이트되는 판매, 검색 TOP10 상품목록을 볼 수 있게 됩니다.