[NestJS] cacheModule, schedulerRegistry

·2021년 12월 11일
0

cacheModule, schedulerRegistry

프로젝트에서는 작성 내용이 실시간으로 DB에 반영될 수 있는 기능을 구현해야 한다. 그런데 이를 위해 클라이언트에서 내용을 수정할 때마다 서버에 요청을 보내어 DB에 업데이트를 하기에는 DB와 서버의 부담이 커진다고 판단했다.

그래서 nestjs의 캐시 기능과 schedulerRegistry를 사용하여 업데이트 요청이 들어오면 일단 캐시에 저장하고 일정 시간이 지난 뒤에 DB에 업데이트를 요청하도록 기능을 구현하였다.

이를 위해 nestjs의 캐시 모듈과 schedulerRegistry를 사용하였으며, 이해를 돕기 위한 코드는 다음과 같다.

  1. 클라이언트에서 업데이트 요청을 한다.
  2. cache에 해당 내용을 저장한다.
  3. timeout을 설정하여 일정 시간(60초)이 지난뒤에 DB에 업데이트를 한다.
  4. DB에 업데이트 되기 전에 클라이언트에서 다른 업데이트 요청이 오면 이전에 등록한 timeout이 있는지 확인하고 해당 timeout을 제거하여 DB에 업데이트 되지 못하게 한다.
  5. cache에 최신의 업데이트 내용을 덮어 씌운다.
  6. 다시 timeout을 설정하여 일정 시간이 지난 뒤에 DB에 업데이트 될 수 있도록 한다.

이렇게 하면 60초 이내에 업데이트 요청이 수만건이 들어와도 실제로 DB에는 하나의 요청만 들어가서 서버와 DB 사이의 부담을 줄일 수 있다.
다만, 59초 마다 클라이언트에서 업데이트 요청이 들어온다면 평생 DB에는 해당 데이터가 수정되지 않을 것이다.

0개의 댓글