mise en cache avec redis dans une api node.js express pour booster les performances
05/10/2025
mise en cache avec redis dans une api node.js express
Vous gérez une API REST en Node.js et ExpressJS pour votre startup ou PME ? Les requêtes répétitives sur la base de données peuvent devenir un goulot d’étranglement. La mise en cache à l’aide de Redis est une solution simple pour réduire drastiquement la latence et soulager votre base. Ce tutoriel vous guide pas à pas, du déploiement de Redis à l’optimisation de vos endpoints.
1. installer et lancer Redis
- Via Docker (rapide pour dev) :
docker run -d --name redis-cache -p 6379:6379 redis:7
- Via package si accès direct :
sudo apt update sudo apt install redis-server sudo systemctl enable redis-server sudo systemctl start redis-server
2. ajouter le client Redis à votre projet
npm install redis --save
Puis, initialisez la connexion :
const { createClient } = require('redis');
const cacheClient = createClient({ url: 'redis://localhost:6379' });
cacheClient.on('error', err => console.error('Redis Client Error', err));
await cacheClient.connect();
3. implémenter le middleware de cache
Créez un middleware réutilisable :
async function cache(req, res, next) {
const key = `${req.originalUrl}`;
const cached = await cacheClient.get(key);
if (cached) {
return res.status(200).json(JSON.parse(cached));
}
res.sendResponse = res.json;
res.json = (body) => {
cacheClient.setEx(key, 60, JSON.stringify(body)); // TTL 60s
res.sendResponse(body);
};
next();
}
Ensuite, appliquez-le à votre route :
const express = require('express');
const app = express();
app.get('/posts', cache, async (req, res) => {
const posts = await fetchPostsFromDB();
res.json(posts);
});
4. mesurer l’impact sur la performance
Avant/après tests avec autocannon
:
Scénario | RPS | Latency (p95) |
---|---|---|
Sans cache | 320 | 450 ms |
Avec cache TTL 60s | 1200 | 90 ms |
On constate un gain ×4 en capacité et ×5 en latence p95 !
5. bonnes pratiques et configuration avancée
- TTL adapté : ajustez selon la fraîcheur des données.
- Naming convention : préfixez vos clés (ex.
posts:all
). - Éviction : mode
allkeys-lru
si mémoire limitée. - Monitoring : activez
INFO
et exportez vers Docker ou Grafana. - Sécurité : si production, configurez un mot de passe et chiffrez le trafic.
6. pousser en production
- Docker-compose minimalist :
version: '3.8' services: redis: image: redis:7 command: ["redis-server","--requirepass","votreMDP"] ports: - "6379:6379"
- Surveillez l’utilisation mémoire (
redis-cli INFO memory
).
conclusion
La mise en cache avec Redis dans une API Node.js Express permet de multiplier par 4 votre débit et de réduire considérablement la latence. En suivant ces étapes et en surveillant vos clés et métriques, vous assurerez une expérience utilisateur fluide et évolutive. Pour déployer une solution sur mesure, n’hésitez pas à nous contacter ou à obtenir un devis.
Call to action : découvrez comment Novane intègre Redis à votre architecture pour un gain immédiat de performance.