[typescript] 타입스크립트와 MongoDB 연동 시 데이터베이스에 캐싱 적용하는 방법

이번 포스트에서는 타입스크립트로 작성한 어플리케이션에서 MongoDB 데이터베이스에 캐싱을 적용하는 방법에 대해 알아보겠습니다. 캐싱을 사용하면 데이터를 메모리나 빠른 저장소에 저장하여 동일한 요청에 대한 응답 시간을 줄일 수 있습니다.

1. 캐싱 라이브러리 선택

첫 번째로, 캐싱을 위한 라이브러리를 선택해야 합니다. 대표적인 캐싱 라이브러리로는 redismemcached가 있습니다. 이 중에서 redis를 선택하여 데이터베이스에 캐싱을 적용하겠습니다.

import * as redis from 'redis';
const client = redis.createClient();

2. MongoDB와 캐싱 연동

데이터베이스에 접근하여 데이터를 가져올 때, 먼저 캐시에서 해당 데이터가 존재하는지 확인합니다. 만약 캐시에 데이터가 없다면 MongoDB에서 데이터를 가져와 캐시에 저장합니다.

async function getCachedData(key: string): Promise<any> {
  return new Promise((resolve, reject) => {
    client.get(key, async (err, data) => {
      if (err) throw err;
      if (data) {
        resolve(JSON.parse(data));
      } else {
        const result = await fetchDataFromMongoDB();
        client.setex(key, 3600, JSON.stringify(result));
        resolve(result);
      }
    });
  });
}

위의 코드에서 getCachedData 함수는 먼저 redis 캐시에서 데이터를 찾고, 존재하지 않을 경우 MongoDB에서 데이터를 가져와 redis에 저장합니다.

3. 캐싱 적용

실제 데이터를 가져오는 부분에서는 getCachedData 함수를 호출하여 캐싱된 데이터를 사용합니다.

async function getData(id: string): Promise<any> {
  const cacheKey = `data_${id}`;
  return getCachedData(cacheKey);
}

이제 MongoDB 데이터베이스에 캐싱을 적용하여 응답 시간을 획기적으로 줄일 수 있게 되었습니다.

4. 마무리

이렇게 타입스크립트 어플리케이션에서 MongoDB와 캐싱 라이브러리 redis를 연동하여 데이터베이스에 캐싱을 적용하는 방법을 알아보았습니다. 캐싱을 통해 응답 시간을 향상시키고, 시스템 자원을 효율적으로 활용할 수 있습니다. 관련하여 더 많은 정보는 레디스 공식 문서, MongoDB 공식 문서를 참고하시기 바랍니다.