Cache em TypeScript: biblioteca 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

O que é node-cache e para que serve?

A biblioteca node-cache é um sistema de cache simples e rápido para Node.js, escrito em TypeScript. Ela permite armazenar dados em memória (in-memory cache), o que acelera significativamente o acesso a informações frequentemente solicitadas (por exemplo, resultados de consultas a banco de dados, respostas de API, cálculos). No TypeScript, o node-cache fornece tipagem estrita, tornando o código mais previsível e seguro.

O cache é necessário para reduzir a carga no servidor, diminuir o tempo de resposta e economizar recursos em operações repetitivas. O Node-cache é ideal para projetos pequenos e médios onde não é necessário um cache distribuído (como Redis), mas precisa de um cache leve em memória.

Instalação

Instale o pacote via npm ou yarn:

npm install node-cache
# ou
yarn add node-cache

Para TypeScript, os tipos já estão incluídos no pacote, não sendo necessário instalar @types adicionalmente.

Funções principais

  • set(key, value, ttl) — armazena um valor por chave com tempo de vida opcional (TTL) em segundos.
  • get(key) — obtém o valor pela chave. Retorna undefined se a chave não existir ou tiver expirado.
  • del(key) — remove uma ou várias chaves.
  • has(key) — verifica a existência de uma chave no cache.
  • flushAll() — limpa todo o cache.
  • getStats() — retorna estatísticas (número de chaves, acertos, erros).

Exemplo de código em TypeScript

import NodeCache from 'node-cache';

// Criamos uma instância do cache com TTL padrão de 60 segundos
const myCache = new NodeCache({ stdTTL: 60 });

// Valor tipado
interface User {
id: number;
name: string;
}

// Armazenamos os dados
const user: User = { id: 1, name: 'Alice' };
myCache.set('user_1', user);

// Obtemos os dados
const cachedUser = myCache.get<User>('user_1');
if (cachedUser) {
console.log(cachedUser.name); // Alice
} else {
console.log('Cache vazio');
}

// Verificação de existência
console.log(myCache.has('user_1')); // true

// Remoção
myCache.del('user_1');

// Limpeza total do cache
myCache.flushAll();

Quando usar node-cache

  • Dados frequentemente solicitados: por exemplo, lista de países, taxas de câmbio, configurações.
  • Resultados de cálculos pesados: armazenar em cache o resultado de uma operação cara por alguns segundos.
  • API gateways: armazenar em cache respostas de APIs externas para reduzir latências e limites.
  • Sessões: armazenamento temporário de dados de sessão (se não for necessária persistência).

Evite node-cache se precisar de cache distribuído entre vários servidores — nesse caso, é melhor usar Redis. Também não é adequado para grandes volumes de dados (mais de 1-2 GB), pois é armazenado na memória RAM.

Node-cache é uma excelente escolha para cenários simples de cache em TypeScript, onde velocidade e configuração mínima são importantes.

Recommendations