Mise en cache Redis dans une application Node.js SaaS pour booster la performance

En tant que CTO ou lead développeur d’une startup SaaS, vous avez déjà observé des temps de réponse qui grimpent dès que votre nombre d’utilisateurs augmente. La mise en cache avec Redis vous permet de soulager votre base de données principale, réduire la latence et améliorer l’expérience utilisateur.

1. Pré-requis techniques

  • Node.js ≥14 et Express.js
  • Serveur Redis (local ou AWS ElastiCache)
  • Client ioredis ou redis

2. Installation et configuration

  1. Installer le package Redis :
    npm install ioredis
  2. Initialiser la connexion dans app.js :
    const Redis = require('ioredis');  
    const redis = new Redis({  
      host: process.env.REDIS_HOST,  
      port: 6379,  
      password: process.env.REDIS_PASS,  
    });  
    
    redis.on('error', err => console.error('Redis Error:', err));

3. Implémentation d’un middleware de cache

Ce middleware affiche la logique “cache ou base” :

async function cacheMiddleware(req, res, next) {  
  const key = `cache:${req.originalUrl}`;  
  const cached = await redis.get(key);  
  if (cached) {  
    return res.json(JSON.parse(cached));  
  }  
  // override send  
  const originalSend = res.send.bind(res);  
  res.send = async body => {  
    await redis.set(key, body, 'EX', 60); // expire 60s  
    originalSend(body);  
  };  
  next();  
}

Appliquez-le sur vos routes critiques :

app.get('/api/products', cacheMiddleware, async (req, res) => {  
  const products = await db.query('SELECT * FROM products');  
  res.send(products);  
});

4. Mesures de performance

RouteTemps sans cacheTemps avec cache
/api/products120 ms25 ms
/api/users/12390 ms15 ms

Avec Redis, on observe jusqu’à 80 % de réduction de la latence — un vrai gain pour la rétention client.

5. Bonnes pratiques et pièges à éviter

  • PPersistence vs cache strict : ne stockez pas de données sensibles (tokens) sans chiffrement.
  • Eviction : configurez une politique LRU si la mémoire est limitée.
  • Cluster Redis : pour un SaaS à forte charge, privilégiez un cluster Redis ou un service managé.
  • Invalidation : pensez à purger les clés quand vos données métiers évoluent.

6. Aller plus loin

Combinez Redis avec Prometheus pour surveiller le taux de hit/miss cache, ou couvrez-le dans votre pipeline CI/CD (Jenkins, GitHub Actions).

Conclusion

La mise en cache Redis s’intègre en quelques minutes dans votre stack Node.js et peut réduire considérablement la charge de votre base de données. Pour un déploiement sécurisé et scalable de votre SaaS, n’hésitez pas à nous contacter ou obtenir un devis personnalisé.