Cache em Node.js: Redis, Memcached e Node-Cache

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cache em JavaScript (Node.js): Redis e outras ferramentas



Cache é uma das principais estratégias de otimização de desempenho para aplicações servidoras em Node.js. Ele permite reduzir a carga em bancos de dados, diminuir o tempo de resposta de APIs e reduzir custos de infraestrutura. Neste artigo, abordaremos as principais ferramentas de cache para Node.js: Redis, Node-Cache (biblioteca nativa) e Memcached, compararemos suas abordagens e mostraremos exemplos reais de código.



Por que o cache é necessário no Node.js?

Sem cache, cada requisição a um recurso popular pode resultar em múltiplas consultas ao banco de dados ou APIs externas. O cache armazena dados frequentemente solicitados em um armazenamento rápido (memória RAM), proporcionando:

  • Redução do tempo de resposta (latência) de 100-500 ms para 1-5 ms.
  • Diminuição do número de requisições ao BD e serviços externos.
  • Aumento da capacidade de processamento do servidor (RPS).


1. Redis — o rei do cache

Redis é um armazenamento de dados do tipo chave-valor em memória, frequentemente usado como cache, broker de mensagens e banco de dados. No Node.js, a biblioteca redis (ou ioredis) é utilizada para trabalhar com Redis.



Instalação e conexão

npm install redis


const redis = require('redis');const client = redis.createClient({  url: 'redis://localhost:6379'});

client.on('error', (err) => console.error('Redis Error:', err));await client.connect();

// Exemplo de cache de dados com TTLasync function getCachedData(key) { const cached = await client.get(key); if (cached) return JSON.parse(cached);

const freshData = { message: 'Hello from DB', time: Date.now() }; await client.setEx(key, 60, JSON.stringify(freshData)); // TTL 60 seg return freshData;}


Características do Redis para Node.js

  • Suporte a TTL — remoção automática de entradas expiradas.
  • Estruturas de dados — strings, listas, conjuntos, hashes, conjuntos ordenados.
  • Pub/Sub — permite construir sistemas de notificações em tempo real.
  • Clusterização — escalabilidade horizontal sem perda de desempenho.


2. Node-Cache — cache leve em memória sem dependências externas

Node-Cache é uma biblioteca simples para armazenar dados em cache diretamente na memória do processo Node.js. Ideal para projetos pequenos, microsserviços ou quando não se deseja configurar Redis.



Instalação e exemplo

npm install node-cache


const NodeCache = require('node-cache');const myCache = new NodeCache({ stdTTL: 100, checkperiod: 120 });

// Salvar dadosmyCache.set('user:123', { name: 'Alice', role: 'admin' });

// Obter dadosconst user = myCache.get('user:123');if (user === undefined) { // dados não estão em cache — precisa carregar do BD console.log('Cache miss');} else { console.log('Cache hit:', user);}

// Remover por chavemyCache.del('user:123');

// Limpar todo o cachemyCache.flushAll();


Prós e contras do Node-Cache

  • Prós: não requer servidor externo, API simples, limpeza automática por TTL.
  • Contras: o cache é armazenado apenas em um único processo — ao reiniciar o servidor, os dados são perdidos; não pode ser usado entre múltiplas instâncias do Node.js.


3. Memcached — cache distribuído com sobrecarga mínima

Memcached é outro armazenamento popular em memória, otimizado para cache. No Node.js, a biblioteca memcached é a mais utilizada.



Instalação e exemplo

npm install memcached


const Memcached = require('memcached');const memcac                    

Recommendations