Como cachear respostas JSON no Node.js com Redis sem alterar (muito) sua lógica atual.
🧠 Como cachear respostas JSON no Node.js (neste exemplo) com Redis sem alterar sua lógica atual?
Se você trabalha com Node.js e sente que seu banco de dados (MySQL, PostgreSQL, etc.) está ficando sobrecarregado com requisições repetitivas, esse post é pra você.
O Redis é muito bom, leve e eficiente e serve para muitas situações, aqui nessa postagem, vamos abordar somente o cacheamento.
🚨 O problema
Você tem controllers, models, lógica toda montada, mas:
Requisições repetidas batem direto no banco.
A performance começa a cair.
Refatorar tudo agora? Nem pensar.
✅ A solução: Cache com Redis (sem mudar sua lógica atual)
A ideia aqui é interceptar suas funções de consulta e cachear as respostas JSON no Redis, de forma automática.
📦 Instale as dependências
npm install redis
⚙️ Configure o Redis
`const redis = require('redis');
const client = redis.createClient();
client.connect();
async function getCache(key) {
const data = await client.get(key);
return data ? JSON.parse(data) : null;
}
async function setCache(key, value, ttl = 86400) {
await client.setEx(key, ttl, JSON.stringify(value));
}
async function clearCache(key) {
await client.del(key);
}
module.exports = { getCache, setCache, clearCache };`
🧩 Use nos seus controllers (sem mudar os models)
`// controllers/userController.js
const { getCache, setCache } = require('../lib/cache');
const User = require('../models/User');
async function listUsers(req, res) {
const cacheKey = 'users:list';
const cached = await getCache(cacheKey);
if (cached) return res.json(cached);
const users = await User.findAll(); // sua lógica normal
await setCache(cacheKey, users);
res.json(users);
}`
♻️ Resetar o cache (opcional)
const { clearCache } = require('../lib/cache'); await clearCache('users:list');
🚀 Resultado
Você mantém seu código do jeito que está e ganha:
Menos carga no banco
Respostas mais rápidas
Cache com TTL (ex: 24h), em casos de aplicações que os dados mudam pouco, é uma mão na roda pois o cache pode ser compartilhado globalmente; claro, não é mágica, não da pra compartilhar dados muito dinâmicos e muito menos dados sensiveis, de usuario logado, etc, mas, é util para uma infinidade de situações. Seja criativo. Existem muitas outras formas de usar o Redis na sua aplicação.
Possibilidade de limpar o cache quando quiser