EIVUS

Redis e Memcached para apps hospedados

Caches em memória no seu servidor: quando usar cada um e como dimensionar.

Voltar ao blog

Redis é rico em recursos (estruturas de dados, persistência, pub/sub); Memcached é simples e multi-thread. Ambos reduzem carga no DB. Rode no mesmo host para baixa latência ou dedique uma instância pequena. Defina limites de memória e políticas de eviction.

Redis vs Memcached

  • Redis: Estruturas de dados (strings, hashes, lists, sets), persistência opcional, pub/sub, scripting Lua. Single-threaded (por núcleo). Bom quando precisa de mais que key-value ou persistência.
  • Memcached: Key-value simples; multi-thread; sem persistência. Muitas vezes mais rápido para cache puro em alta concorrência. Menor uso de memória por chave.

Dimensionamento e colocação

  • Mesmo host: Rode Redis/Memcached no servidor da app para menor latência. Compartilhe RAM com a app; defina limite de memória para o cache não esgotar a app.
  • Instância dedicada: VPS pequeno ou container só para cache quando há muitos servidores de app ou precisa de mais memória. Pequena latência de rede mas compartilhada na camada de app.
  • Memória: Aloque o suficiente para o working set (chaves quentes). Defina maxmemory e política de eviction (ex.: allkeys-lru) para o servidor não dar OOM.

Boas práticas

  • Eviction: Configure política de eviction (LRU, LFU, etc.) para quando a memória encher o servidor evictar chaves em vez de falhar.
  • Persistência (Redis): RDB e/ou AOF se precisar de durabilidade. Para cache puro, persistência pode ser desabilitada.
  • Segurança: Bind em localhost ou IP privado; use senha se o cache estiver em rede compartilhada. Restrinja acesso com firewall.

Resumo

Redis = recursos ricos e persistência opcional; Memcached = cache simples e multi-thread. Dimensione memória para o working set; defina eviction; rode no mesmo host para latência ou dedicado para escala.

Clientes que confiam na gente