Mise en cache dans Node.js : Redis, Memcached et Node-Cache

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Mise en cache en JavaScript (Node.js) : Redis et autres outils



La mise en cache est l'une des stratégies clés pour optimiser les performances des applications serveur sur Node.js. Elle permet de réduire la charge sur les bases de données, de diminuer le temps de réponse des API et de réduire les coûts d'infrastructure. Dans cet article, nous allons passer en revue les principaux outils de mise en cache pour Node.js : Redis, Node-Cache (bibliothèque intégrée) et Memcached, comparer leurs approches et montrer des exemples de code concrets.



Pourquoi la mise en cache dans Node.js ?

Sans cache, chaque requête vers une ressource populaire peut entraîner de multiples accès à la base de données ou à des API externes. Le cache conserve les données fréquemment demandées dans un stockage rapide (mémoire vive), ce qui permet :

  • Réduire le temps de réponse (latence) de 100-500 ms à 1-5 ms.
  • Diminuer le nombre de requêtes vers la base de données et les services externes.
  • Augmenter le débit du serveur (RPS).


1. Redis — le roi de la mise en cache

Redis est un magasin de données clé-valeur en mémoire, souvent utilisé comme cache, courtier de messages et base de données. Dans Node.js, la bibliothèque redis (ou ioredis) est utilisée pour interagir avec Redis.



Installation et connexion

npm install redis


const redis = require('redis');const client = redis.createClient({  url: 'redis://localhost:6379'});

client.on('error', (err) => console.error('Redis Error:', err));await client.connect();

// Exemple de mise en cache de données avec TTLasync function getCachedData(key) { const cached = await client.get(key); if (cached) return JSON.parse(cached);

const freshData = { message: 'Hello from DB', time: Date.now() }; await client.setEx(key, 60, JSON.stringify(freshData)); // TTL 60 sec return freshData;}


Caractéristiques de Redis pour Node.js

  • Support TTL — suppression automatique des entrées obsolètes.
  • Structures de données — chaînes, listes, ensembles, hachages, ensembles triés.
  • Pub/Sub — permet de construire des systèmes de notifications en temps réel.
  • Clustering — mise à l'échelle horizontale sans perte de performance.


2. Node-Cache — cache en mémoire léger sans dépendances externes

Node-Cache est une bibliothèque simple pour mettre en cache des données directement dans la mémoire du processus Node.js. Idéal pour les petits projets, les microservices ou lorsqu'on ne souhaite pas déployer Redis.



Installation et exemple

npm install node-cache


const NodeCache = require('node-cache');const myCache = new NodeCache({ stdTTL: 100, checkperiod: 120 });

// Sauvegarde de donnéesmyCache.set('user:123', { name: 'Alice', role: 'admin' });

// Récupération de donnéesconst user = myCache.get('user:123');if (user === undefined) { // données non présentes dans le cache — il faut charger depuis la base de données console.log('Cache miss');} else { console.log('Cache hit:', user);}

// Suppression par clémyCache.del('user:123');

// Vidage complet du cachemyCache.flushAll();


Avantages et inconvénients de Node-Cache

  • Avantages : ne nécessite pas de serveur externe, API simple, nettoyage automatique via TTL.
  • Inconvénients : le cache est stocké uniquement dans un seul processus — les données sont perdues lors du redémarrage du serveur ; ne peut pas être utilisé entre plusieurs instances Node.js.


3. Memcached — cache distribué avec un minimum de surcharge

Memcached est un autre magasin en mémoire populaire, optimisé pour la mise en cache. Dans Node.js, la bibliothèque memcached est la plus couramment utilisée.



Installation et exemple

npm install memcached


const Memcached = require('memcached');const memcac                    

Recommendations