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-cachePara 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.
Também na biblioteca
Autorização e Autenticação em Swift: guia completo para iOS/macOS
PhpSpreadsheet para PHP: guia completo com exemplos práticos
Métricas Prometheus em Kotlin: integração com Micrometer e Ktor