const express = require("express"); const redis = require("redis"); const app = express(); const redisClient = redis.createClient();
app.get("/search", async (req, res) => { const { query } = req.query; redisClient.get(query, async (err, data) => { if (data) return res.json(JSON.parse(data)); const result = await buscarDados(query); redisClient.setex(query, 3600, JSON.stringify(result)); res.json(result); }); });
# Primeira chamada (armazena no cache) curl "http://localhost:3000/search?query=produtos" # Segunda chamada (pega do cache) curl "http://localhost:3000/search?query=produtos"
Preparar o ambiente
redis-server
mkdir cache-redis && cd cache-redis && npm init -y
Instalar dependências
npm install express redis
Configurar o cliente Redis
const redis = require('redis'); const client = redis.createClient(); client.on('connect', () => console.log(' Conectado ao Redis')); client.on('error', err => console.error(' Erro Redis:', err));
Criar servidor Express
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.use(express.json());
Definir rota de cache
app.get('/search', async (req, res) => { const { query } = req.query; if (!query) return res.status(400).json({ error: 'Parâmetro "query" obrigatório' }); client.get(query, async (err, data) => { if (data) return res.json(JSON.parse(data)); const result = await buscarDados(query); client.setex(query, 3600, JSON.stringify(result)); res.json(result); }); });
Função de busca (exemplo)
async function buscarDados(query) { return { query, resultado: `Dados para "${query}"` }; }
Testar a API
curl "http://localhost:3000/search?query=produtos" # grava no cache curl "http://localhost:3000/search?query=produtos" # lê do cache
Boas práticas avançadas
client.del(key)
encodeURIComponent
INFO memory
/users