Caching in Node.js: Redis, Memcached und Node-Cache

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Caching in JavaScript (Node.js): Redis und andere Tools



Caching ist eine der wichtigsten Strategien zur Optimierung der Leistung von Serveranwendungen in Node.js. Es ermöglicht, die Datenbanklast zu reduzieren, die API-Antwortzeit zu verkürzen und die Infrastrukturkosten zu senken. In diesem Artikel behandeln wir die wichtigsten Caching-Tools für Node.js: Redis, Node-Cache (eingebaute Bibliothek) und Memcached, vergleichen ihre Ansätze und zeigen reale Codebeispiele.



Warum ist Caching in Node.js notwendig?

Ohne Cache kann jede Anfrage an eine beliebte Ressource zu mehrfachen Datenbank- oder externen API-Aufrufen führen. Der Cache speichert häufig angefragte Daten in einem schnellen Speicher (RAM), was Folgendes bietet:

  • Reduzierung der Antwortzeit (Latenz) von 100-500 ms auf 1-5 ms.
  • Verringerung der Anzahl von Anfragen an die Datenbank und externe Dienste.
  • Erhöhung des Serverdurchsatzes (RPS).


1. Redis – der König des Cachings

Redis ist ein In-Memory-Datenspeicher vom Typ "Schlüssel-Wert", der häufig als Cache, Message Broker und Datenbank verwendet wird. In Node.js wird für die Arbeit mit Redis die Bibliothek redis (oder ioredis) verwendet.



Installation und Verbindung

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();

// Beispiel für das Caching von Daten mit 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 Sekunden return freshData;}


Besonderheiten von Redis für Node.js

  • TTL-Unterstützung – automatische Löschung veralteter Einträge.
  • Datenstrukturen – Strings, Listen, Mengen, Hashes, sortierte Mengen.
  • Pub/Sub – ermöglicht den Aufbau von Echtzeit-Benachrichtigungssystemen.
  • Clustering – horizontale Skalierung ohne Leistungseinbußen.


2. Node-Cache – leichter In-Memory-Cache ohne externe Abhängigkeiten

Node-Cache ist eine einfache Bibliothek zum Caching von Daten direkt im Speicher des Node.js-Prozesses. Ideal für kleine Projekte, Microservices oder wenn man keinen Redis aufsetzen möchte.



Installation und Beispiel

npm install node-cache


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

// Daten speichernmyCache.set('user:123', { name: 'Alice', role: 'admin' });

// Daten abrufenconst user = myCache.get('user:123');if (user === undefined) { // Daten nicht im Cache – müssen aus der DB geladen werden console.log('Cache miss');} else { console.log('Cache hit:', user);}

// Löschen nach SchlüsselmyCache.del('user:123');

// Gesamten Cache leerenmyCache.flushAll();


Vor- und Nachteile von Node-Cache

  • Vorteile: kein externer Server erforderlich, einfache API, automatische Bereinigung per TTL.
  • Nachteile: Cache wird nur in einem Prozess gespeichert – bei Serverneustart gehen Daten verloren; kann nicht zwischen mehreren Node.js-Instanzen verwendet werden.


3. Memcached – verteilter Cache mit minimalem Overhead

Memcached ist ein weiterer beliebter In-Memory-Speicher, der für das Caching optimiert ist. In Node.js wird meist die Bibliothek memcached verwendet.



Installation und Beispiel

npm install memcached


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

Empfehlungen