Redis-Client für TypeScript: ioredis und redis (node-redis)
\n\nIn 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\nWarum braucht man einen Redis-Client für TypeScript?
\nTypeScript 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
Die Bibliothek ioredis
\nioredis 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\nInstallation
\nnpm install ioredis\nnpm install @types/ioredis # wenn Sie TypeScript < 4.0 verwenden\n\nBeispiel für Verbindung und grundlegende Operationen
\nimport 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\nUnterstützung für Cluster und Pub/Sub
\nioredis arbeitet hervorragend mit Redis-Clustern. Dazu wird die spezielle Klasse Cluster verwendet:
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\nFür Pub/Sub wird eine separate Verbindung verwendet, da ein Abonnent keine normalen Befehle ausführen kann:
\nimport 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\nDie Bibliothek redis (node-redis)
\nredis (Paket redis auf n
Auch in der Bibliothek
JWT-Token in Swift: Vollständiger Leitfaden zur Arbeit mit JSON Web Tokens
TypeBox für TypeScript: Komplettguide mit Praxisbeispielen
Scrutor für C# (.NET): Vollständige Anleitung mit Beispielen
WebSocket-Bibliothek in C++: Vollständiger Leitfaden zur Auswahl und Verwendung