[python] Flask에서 Redis를 활용한 캐싱 구현하기

웹 애플리케이션을 개발하다 보면 데이터베이스나 외부 API로부터 데이터를 가져와야 할 때가 많습니다. 매번 같은 요청에 대해 매번 동일한 데이터를 매번 데이터베이스나 외부 API에서 가져온다면 성능상 비효율적일 수 있습니다. 이런 경우 캐시를 활용하여 동일한 요청에 대한 응답을 저장하고, 동일한 요청이 들어왔을 때 캐시된 데이터를 사용함으로써 서버의 부하를 줄일 수 있습니다.

Redis를 사용한 캐싱 구현

Flask에서는 내장 데코레이터를 사용하여 Redis와 손 쉽게 상호작용할 수 있습니다. 이를 위해서는 먼저 Redis 서버가 설치되어 있어야 합니다. 그리고 Flask-Redis와 같은 패키지를 설치한 후, 다음과 같이 캐싱을 구현할 수 있습니다.

from flask import Flask
from flask_redis import FlaskRedis

app = Flask(__name__)
app.config['REDIS_URL'] = "redis://localhost:6379/0"

redis_store = FlaskRedis(app)

@app.route('/cached')
@redis_store.cached(timeout=60)
def cached_endpoint():
    # 캐시가 존재하지 않을 때만 실행되는 로직
    return "이 응답은 캐시에 저장됩니다."

위 코드에서 @redis_store.cached 데코레이터를 사용하여 해당 엔드포인트의 응답을 캐싱할 수 있습니다. timeout 매개변수는 캐시의 유효 시간을 나타내며, 지정된 시간이 지나면 해당 데이터는 캐시에서 제거됩니다.

마치며

캐싱은 웹 애플리케이션의 성능을 향상시키는 데 중요한 역할을 합니다. FlaskRedis를 함께 사용하면 쉽게 캐싱을 구현할 수 있으며, 이를 통해 서버의 응답 속도를 향상시킬 수 있습니다.

더 자세한 내용은 Flask와 Redis의 공식 문서를 참고하시기 바랍니다.

Flask 공식 문서 Redis 공식 문서