Redis-Client für JavaScript (Node.js) — ioredis
\n\nRedis ist ein leistungsstarker Schlüssel-Wert-Datenspeicher, der häufig für Caching, Sitzungsverwaltung, Nachrichtenwarteschlangen und Pub/Sub-Systeme verwendet wird. Für die Arbeit mit Redis aus Node.js gibt es mehrere Bibliotheken, aber eine der leistungsstärksten und beliebtesten ist ioredis. Diese Bibliothek ist für moderne Anwendungen konzipiert, die hohe Leistung, Unterstützung für Clusterbildung, Transaktionen und Datenstromverarbeitung erfordern.
\n\nWas ist ioredis?
\nioredis ist ein voll funktionsfähiger Redis-Client für Node.js, geschrieben in JavaScript. Er unterstützt alle Redis-Funktionen, einschließlich Clusterbildung, Sentinel-Modi, Pipelining, Transaktionen (MULTI/EXEC), Lua-Skripte, Pub/Sub sowie die Arbeit mit MapReduce-ähnlichen Strukturen. Die Bibliothek wird aktiv weiterentwickelt und von vielen Unternehmen in der Produktion eingesetzt.
\n\nInstallation von ioredis
\nDie Installation erfolgt über npm:
\nnpm install ioredis\nNach der Installation können Sie eine Verbindung zum Redis-Server herstellen:
\nconst Redis = require('ioredis');\nconst redis = new Redis(); // standardmäßig localhost:6379\n\nHauptfunktionen von ioredis
\n- \n
- Einfachheit — intuitive API, ähnlich den Redis-Befehlen. \n
- Promise- und async/await-Unterstützung — alle asynchronen Operationen geben Promises zurück. \n
- Clusterbildung — automatische Verteilung von Anfragen auf Cluster-Knoten. \n
- Sentinel — automatisches Umschalten auf den Backup-Server bei Ausfällen. \n
- Pipelining — Senden mehrerer Befehle in einer Anfrage zur Leistungssteigerung. \n
- Pub/Sub — Abonnieren von Kanälen und Echtzeit-Nachrichtenaustausch. \n
- Unterstützung für Lua-Skripte — Ausführung atomarer Operationen auf der Serverseite. \n
- Überwachung und Ereignisse — Verfolgung des Verbindungsstatus und von Fehlern. \n
Beispiele für die Verwendung von ioredis
\n\nGrundlegende Arbeit mit Schlüsseln
\nBeispiel zum Setzen und Abrufen eines Werts:
\nconst Redis = require('ioredis');\nconst redis = new Redis();\n\nasync function basicExample() {\n await redis.set('user:1', 'Alice');\n const value = await redis.get('user:1');\n console.log(value); // Alice\n}\nbasicExample();\n\nArbeit mit Hashes
\nHashes ermöglichen das Speichern mehrerer Felder unter einem Schlüssel:
\nasync function hashExample() {\n await redis.hset('user:2', 'name', 'Bob', 'age', 30);\n const name = await redis.hget('user:2', 'name');\n console.log(name); // Bob\n}\nhashExample();\n\nPipelining
\nPipelining beschleunigt die Ausführung mehrerer Befehle erheblich:
\nasync function pipelineExample() {\n const pipeline = redis.pipeline();\n pipeline.set('key1', 'value1');\n pipeline.set('key2', 'value2');\n pipeline.get('key1');\n const results = await pipeline.exec();\n console.log(results); // Array der Ergebnisse\n}\npipelineExample();\n\nPub/Sub (Publisher-Subscriber)
\nBeispiel für das Abonnieren eines Kanals und das Senden einer Nachricht:
\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\nasync function publishMessage() {\n await publisher.publish('news', 'Hallo, Welt!');\n}\npublishMessage();\n\nArbeit mit Redis-Cluster
\nFür die Verbindung zu einem Cluster verwenden Sie Redis.Cluster:
const Redis = Auch in der Bibliothek
Gradle Kotlin DSL für Kotlin: Vollständige Anleitung mit Beispielen
gRPC in Rust: Die Bibliotheken Tonic und Grpc-rs mit Beispielen
Autorisierung und Authentifizierung in JavaScript (Node.js): vollständiger Leitfaden
Konfiguration von Go-Anwendungen: Die Bibliothek viper
Überwachung von Java-Anwendungen: Tools und Best Practices