Redis-Client für Node.js: ioredis – ein leistungsstarkes Tool für die Arbeit mit 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 Node.js: ioredis



Redis ist ein leistungsstarkes In-Memory-Datenspeichersystem, das häufig als Datenbank, Cache und Nachrichtenbroker verwendet wird. Für die Interaktion mit Redis aus Node.js heraus gibt es mehrere Bibliotheken, aber eine der beliebtesten und funktionsreichsten ist ioredis. Diese Bibliothek bietet eine vollwertige, leistungsstarke und benutzerfreundliche API für die Arbeit mit Redis und unterstützt alle modernen Funktionen, einschließlich Clusterbildung, Pub/Sub, Transaktionen und Lua-Skripte.



In diesem Artikel werden wir ioredis im Detail betrachten, seine Installation, die wichtigsten Funktionen und praktische Codebeispiele in JavaScript (Node.js) vorstellen.



Installation und Verbindung



Die Installation von ioredis über npm oder yarn ist unkompliziert:



npm install ioredis# oderyarn add ioredis


Nach der Installation erstellen Sie eine Client-Instanz:



const Redis = require('ioredis');const redis = new Redis(); // Standardmäßig localhost:6379

// Oder mit expliziten Parameternconst redis = new Redis({ host: 'localhost', port: 6379, password: 'your_password', // falls ein Passwort gesetzt ist db: 0});


Die Bibliothek unterstützt Promise und async/await, was den Code sauber und lesbar macht.



Grundlegende Datenoperationen



ioredis ermöglicht die Ausführung aller Standard-Redis-Befehle. Sehen wir uns Beispiele für die Arbeit mit Strings, Listen und Hashes an.



Arbeit mit Strings



async function stringExample() {  await redis.set('user:1:name', 'Alexej');  const name = await redis.get('user:1:name');  console.log(name); // Alexej

// Setzen mit Ablaufzeit (TTL) await redis.setex('temp:code', 60, '123456'); // lebt 60 Sekunden}


Arbeit mit Listen



async function listExample() {  await redis.lpush('queue:tasks', 'task1', 'task2');  await redis.rpush('queue:tasks', 'task3');  const tasks = await redis.lrange('queue:tasks', 0, -1);  console.log(tasks); // ['task2', 'task1', 'task3']}


Arbeit mit Hashes



async function hashExample() {  await redis.hset('user:1', {    name: 'Maria',    age: 28,    city: 'Moskau'  });  const age = await redis.hget('user:1', 'age');  console.log(age); // 28

const allData = await redis.hgetall('user:1'); console.log(allData); // { name: 'Maria', age: '28', city: 'Moskau' }}


Pub/Sub (Publisher-Subscriber)



Redis unterstützt das Pub/Sub-Muster und ioredis bietet eine benutzerfreundliche Schnittstelle dafür. Wichtig: Der Abonnent muss eine separate Verbindung verwenden.



// Abonnentconst subscriber = new Redis();subscriber.subscribe('news', 'updates', (err, count) => {  console.log(`Abonniert ${count} Kanäle`);});

subscriber.on('message', (channel, message) => { console.log(`Erhalten von ${channel}: ${message}`);});

// Herausgeber (kann in einem anderen Prozess sein)const publisher = new Redis();publisher.publish('news', 'Hallo, Welt!');publisher.publish('updates', 'Version 2.0 ist veröffentlicht');


Arbeit mit dem Redis-Cluster



ioredis unterstützt die Clusterbildung hervorragend. Sie müssen lediglich eine Liste der Cluster-Knoten übergeben:



const cluster = new Redis.Cluster([  { host: 'node1.example.com', port: 6379 },  { host: 'node2.example.com', port: 6379 },  { host: 'node3.example.com', port: 6379 }]);

async function clusterExample() { await cluster.set('key', 'value'); const val = await cluster.get('key'); console.log(val); // value}


Die Bibliothek verarbeitet automatisch die Weiterleitung von Befehlen zwischen Knoten (MOVED, ASK) und unterstützt Slots.



Transaktionen und Pipelines



Für die atomare Ausführung mehrerer Befehle verwenden Sie Transaktionen (MULTI/EXEC). Zur Leistungssteigerung verwenden Sie Pipelines.



Transaktionen



async function transaction                    

Empfehlungen