Redis-Client für TypeScript: ioredis und redis (node-redis)

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

Redis-Client für TypeScript: ioredis und redis (node-redis)

\n\n

In der Welt moderner Webanwendungen und Microservices ist Redis einer der beliebtesten In-Memory-Datenspeicher. Es wird für Caching, Sitzungsverwaltung, Aufgabenwarteschlangen, Pub/Sub und vieles mehr verwendet. Wenn Sie mit TypeScript entwickeln, benötigen Sie einen zuverlässigen Client für die Interaktion mit Redis. In diesem Artikel betrachten wir zwei Hauptoptionen: ioredis und redis (auch bekannt als node-redis). Beide Bibliotheken bieten hervorragende TypeScript-Unterstützung, werden aktiv weiterentwickelt und bieten eine breite Palette an Funktionen.

\n\n

Warum braucht man einen Redis-Client für TypeScript?

\n

TypeScript fügt JavaScript statische Typisierung hinzu, was den Code vorhersagbarer macht und die Anzahl der Fehler während der Entwicklung reduziert. Ein Redis-Client für TypeScript ermöglicht:

\n
    \n
  • Arbeiten mit Redis-Befehlen mit vollständiger Typunterstützung.
  • \n
  • Nutzung der Autovervollständigung in der IDE (IntelliSense).
  • \n
  • Einfache Integration mit modernen Frameworks (NestJS, Express, Koa).
  • \n
  • Vereinfachte Fehlerbehandlung und erneute Verbindungsversuche.
  • \n
\n\n

Die Bibliothek ioredis

\n

ioredis ist ein voll funktionsfähiger Redis-Client, der lange Zeit der De-facto-Standard im Node.js-Ökosystem war. Er unterstützt Clustering, Pub/Sub, Pipelining, Transaktionen (MULTI/EXEC), automatische Wiederverbindung und vieles mehr. ioredis ist in TypeScript geschrieben und bietet Typen direkt aus der Box.

\n\n

Installation

\n
npm install ioredis\nnpm install @types/ioredis # wenn Sie TypeScript < 4.0 verwenden
\n\n

Beispiel für Verbindung und grundlegende Operationen

\n
import Redis from 'ioredis';\n\n// Verbindung zu Redis herstellen (Standard: localhost:6379)\nconst redis = new Redis();\n\n// Asynchrone Funktion zur Demonstration\nasync function demo() {\n  try {\n    // Wert setzen\n    await redis.set('user:1:name', 'Anna');\n    await redis.set('user:1:age', 30);\n\n    // Wert abrufen\n    const name = await redis.get('user:1:name');\n    console.log('Benutzername:', name);\n\n    // Arbeiten mit Hashes\n    await redis.hset('user:2', 'name', 'Ivan', 'age', 25);\n    const user2 = await redis.hgetall('user:2');\n    console.log('Benutzer 2:', user2);\n\n    // Inkrementieren\n    const views = await redis.incr('page:home:views');\n    console.log('Seitenaufrufe:', views);\n\n    // Setzen mit Ablaufzeit (TTL)\n    await redis.setex('temp:code', 60, '123456');\n    const ttl = await redis.ttl('temp:code');\n    console.log('Verbleibende Lebensdauer des Schlüssels:', ttl, 'Sekunden');\n\n  } catch (error) {\n    console.error('Redis-Fehler:', error);\n  } finally {\n    // Verbindung schließen\n    redis.disconnect();\n  }\n}\n\ndemo();
\n\n

Unterstützung für Cluster und Pub/Sub

\n

ioredis arbeitet hervorragend mit Redis-Clustern. Dazu wird die spezielle Klasse Cluster verwendet:

\n
import Redis from 'ioredis';\n\nconst cluster = new Redis.Cluster([\n  { host: '127.0.0.1', port: 7000 },\n  { host: '127.0.0.1', port: 7001 },\n  { host: '127.0.0.1', port: 7002 }\n]);\n\nawait cluster.set('foo', 'bar');\nconst value = await cluster.get('foo');\nconsole.log(value); // 'bar'
\n\n

Für Pub/Sub wird eine separate Verbindung verwendet, da ein Abonnent keine normalen Befehle ausführen kann:

\n
import Redis from 'ioredis';\n\nconst subscriber = new Redis();\nconst publisher = new Redis();\n\nsubscriber.subscribe('news', (err, count) => {\n  console.log(`Abonniert ${count} Kanal/Kanäle`);\n});\n\nsubscriber.on('message', (channel, message) => {\n  console.log(`Nachricht von Kanal ${channel} erhalten: ${message}`);\n});\n\n// Nachricht veröffentlichen\npublisher.publish('news', 'Hallo aus TypeScript!');
\n\n

Die Bibliothek redis (node-redis)

\n

redis (Paket redis auf n

Empfehlungen