[Python] Como implementar um sistema de cache eficiente para uma API REST com alto volume de...

Discussão em 'Python' iniciado por Stack, Março 9, 2025.

  1. Stack

    Stack Membro Participativo

    Estou desenvolvendo uma API que precisa lidar com ~340.000 requisições/hora e preciso implementar um sistema de cache eficiente. Atualmente:

    from fastapi import FastAPI
    from redis import Redis
    import json

    app = FastAPI()
    redis = Redis(host='localhost', port=6379)

    @app.get("/users/{user_id}")
    async def get_user(user_id: int):
    # Problema: Cache atual não escala bem
    cache_key = f"user:{user_id}"

    if redis.exists(cache_key):
    return json.loads(redis.get(cache_key))

    user = await db.fetch_user(user_id) # Consulta cara no banco
    redis.setex(cache_key, 3600, json.dumps(user))
    return user


    Cenário Atual:

    ~340.000 requisições/hora

    Latência média: 200ms

    Cache hit rate: 65%

    RAM uso: 85%

    CPU uso: 75%

    Tentativas já feitas:

    Cache em memória (muito RAM)

    Redis single instance (gargalo)

    Múltiplas réplicas Redis (problemas de consistência)

    Objetivos:

    Reduzir latência para <50ms

    Aumentar cache hit rate para >90%

    Reduzir uso de RAM/CPU

    Manter consistência dos dados

    Perguntas:

    Qual a melhor estratégia de cache para este cenário?

    Como lidar com invalidação de cache distribuído?

    Existe algum padrão de design recomendado?

    Como evitar "cache stampede"?

    Ambiente:

    Python 3.11

    FastAPI

    Redis 7.0

    PostgreSQL 15

    Kubernetes

    Agradeço qualquer insight sobre arquitetura de cache em larga escala!

    Continue reading...

Compartilhe esta Página