[typescript] 타입스크립트와 MongoDB 연동 시 데이터베이스에 캐싱 적용하는 방법
이번 포스트에서는 타입스크립트로 작성한 어플리케이션에서 MongoDB 데이터베이스에 캐싱을 적용하는 방법에 대해 알아보겠습니다. 캐싱을 사용하면 데이터를 메모리나 빠른 저장소에 저장하여 동일한 요청에 대한 응답 시간을 줄일 수 있습니다.
1. 캐싱 라이브러리 선택
첫 번째로, 캐싱을 위한 라이브러리를 선택해야 합니다. 대표적인 캐싱 라이브러리로는 redis
와 memcached
가 있습니다. 이 중에서 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 공식 문서를 참고하시기 바랍니다.