[python] FastAPI에서 인메모리 캐싱 사용 방법

FastAPI는 인메모리 캐싱을 통해 응용 프로그램의 성능을 향상시킬 수 있는 기능을 제공합니다. 인메모리 캐싱을 사용하면 빠른 응답속도를 얻을 수 있으며, 중복된 요청을 처리할 필요가 없어서 서버 부하를 줄일 수 있습니다.

FastAPI에서의 인메모리 캐시 라이브러리

FastAPI에서는 cachetools 라이브러리를 사용하여 인메모리 캐싱을 수행할 수 있습니다. cachetools 라이브러리는 데이터를 캐싱하고 지정된 시간 동안 캐시된 데이터를 유지하는 기능을 제공합니다.

FastAPI 앱에 인메모리 캐싱 적용하기

다음은 FastAPI 앱에서 cachetools를 사용하여 인메모리 캐싱을 적용하는 간단한 예제입니다.

from fastapi import FastAPI
from cachetools import cached, TTLCache

app = FastAPI()

cache = TTLCache(maxsize=100, ttl=600)

@cached(cache)
def get_data_from_db(item_id: int):
    # 여기에 데이터베이스에서 데이터를 가져오는 코드를 입력합니다.
    return f"데이터베이스로부터 얻은 데이터: {item_id}"
  
@app.get("/data/{item_id}")
def read_data(item_id: int):
    return get_data_from_db(item_id)

위의 코드에서 TTLCache를 사용하여 최대 크기와 만료 시간을 설정하고, @cached(cache)를 사용하여 함수의 결과를 캐시합니다. 이렇게 하면 get_data_from_db 함수의 반환값이 캐시되어 데이터베이스에서 동일한 item_id에 대해 중복 요청을 처리할 필요가 없어집니다.

마치며

FastAPI에서 인메모리 캐싱을 사용하여 성능을 향상시킬 수 있습니다. 다양한 종류의 캐시 제공 라이브러리가 있으므로 사용 사례에 맞는 최적의 캐시 전략을 선택하는 것이 중요합니다.