Felipe Moacir

Redis: O Segredo das APIs Ultra-Rápidas

BackendCacheRedis
Redis: O Segredo das APIs Ultra-Rápidas

Se sua API consulta o Postgres/MySQL toda vez que o usuário carrega o perfil, você está desperdiçando recursos. 90% das leituras são repetidas.

Redis é um banco de dados em memória (RAM). Ler do Redis leva microsegundos. Ler do disco leva milissegundos.

O Padrão Cache-Aside

  1. A aplicação pede o dado.
  2. Verifica no Redis.
    • Hit: Retorna imediatamente.
    • Miss: Busca no Banco SQL, salva no Redis (com tempo de expiração), e retorna.
// Exemplo com Upstash Redis
import { Redis } from '@upstash/redis'

const redis = new Redis(...)

async function getUser(id) {
  const cached = await redis.get(`user:${id}`)
  if (cached) return cached

  const user = await db.user.find(id)
  await redis.set(`user:${id}`, user, { ex: 3600 }) // Expira em 1h
  return user
}

Rate Limiting

Redis também é perfeito para impedir abuso da API. Você pode contar quantas requisições um IP fez nos últimos 60 segundos e bloquear se passar do limite.

Estratégias de Expiração

  • TTL fixo: Dados que mudam pouco (ex: lista de países) podem ter TTL de 24h.
  • TTL curto: Dados que mudam com frequência (ex: estoque) — 5 a 15 minutos.
  • Cache invalidation: Ao atualizar um registro no banco, delete a chave correspondente no Redis para forçar refresh na próxima leitura.

Redis Serverless (Upstash, Redis Cloud)

Para aplicações serverless, Redis tradicional (sempre ligado) pode ser caro. Upstash e similares oferecem Redis em modelo pay-per-request, ideal para Lambdas e Edge Functions que não mantêm conexão persistente.

Implementar Redis é a otimização de backend com maior ROI (Retorno sobre Investimento) que existe.