Suche…


Bemerkungen

Wir haben die grundlegenden und am häufigsten verwendeten Operationen in node_redis behandelt. Mit diesem Modul können Sie die volle Leistungsfähigkeit von Redis nutzen und wirklich ausgeklügelte Node.js-Apps erstellen. Mit dieser Bibliothek können Sie viele interessante Dinge erstellen, z. B. eine starke Caching-Schicht, ein leistungsstarkes Pub / Sub-Messagingsystem und vieles mehr. Um mehr über die Bibliothek zu erfahren, lesen Sie die Dokumentation .

Fertig machen

node_redis ist, wie Sie vielleicht schon vermutet haben, der Redis-Client für Node.js. Sie können es über npm mit dem folgenden Befehl installieren.

npm install redis

Nachdem Sie das node_redis-Modul installiert haben, können Sie loslegen. Erstellen wir eine einfache Datei, app.js, und sehen Sie, wie Sie von Node.js aus eine Verbindung mit Redis herstellen.

app.js

var redis = require('redis');
client = redis.createClient(); //creates a new client

Standardmäßig verwendet redis.createClient () 127.0.0.1 und 6379 als Hostnamen und Port. Wenn Sie einen anderen Host / Port haben, können Sie diesen wie folgt angeben:

var client = redis.createClient(port, host);

Jetzt können Sie eine Aktion ausführen, sobald eine Verbindung hergestellt wurde. Grundsätzlich müssen Sie nur auf Verbindungsereignisse warten, wie unten gezeigt.

client.on('connect', function() {
    console.log('connected');
});

Der folgende Ausschnitt ist also in app.js enthalten:

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('connected');
});

Geben Sie im Appliance node app ein, um die App auszuführen. Stellen Sie sicher, dass Ihr Redis-Server betriebsbereit ist, bevor Sie dieses Snippet ausführen.

Schlüsselwertpaare speichern

Nun, da Sie wissen, wie Sie mit Redis von Node.js aus eine Verbindung herstellen, sehen Sie, wie Schlüssel-Wert-Paare in Redis-Speicher gespeichert werden.

Saiten speichern

Alle Redis-Befehle werden als verschiedene Funktionen für das Client-Objekt verfügbar gemacht. Um eine einfache Zeichenfolge zu speichern, verwenden Sie folgende Syntax:

client.set('framework', 'AngularJS');

Oder

client.set(['framework', 'AngularJS']);

Die obigen Ausschnitte speichern einen einfachen String AngularJS im Schlüsselrahmen. Sie sollten beachten, dass beide Snippets dasselbe tun. Der einzige Unterschied besteht darin, dass der erste eine variable Anzahl von Argumenten übergibt, während der spätere ein args-Array an die client.set() Funktion client.set() . Sie können auch einen optionalen Rückruf übergeben, um eine Benachrichtigung zu erhalten, wenn der Vorgang abgeschlossen ist:

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

Wenn der Vorgang aus irgendeinem Grund fehlgeschlagen ist, repräsentiert das Argument err für den Rückruf den Fehler. Gehen Sie folgendermaßen vor, um den Wert des Schlüssels abzurufen:

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get() können Sie einen in Redis gespeicherten Schlüssel abrufen. Auf den Wert des Schlüssels kann über das Rückrufargument Reply zugegriffen werden. Wenn der Schlüssel nicht vorhanden ist, ist der Wert der Antwort leer.

Hash speichern

Das Speichern einfacher Werte löst Ihr Problem oft nicht. Sie müssen Hashes (Objekte) in Redis speichern. Dafür können Sie die hmset() Funktion wie folgt verwenden:

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

Das obige Snippet speichert einen Hash in Redis, der jede Technologie ihrem Framework zuordnet. Das erste Argument für hmset() ist der Name des Schlüssels. Nachfolgende Argumente repräsentieren Schlüsselwertpaare. In ähnlicher Weise wird hgetall() verwendet, um den Wert des Schlüssels abzurufen. Wenn der Schlüssel gefunden wird, enthält das zweite Argument des Rückrufs den Wert, der ein Objekt ist.

Beachten Sie, dass Redis keine verschachtelten Objekte unterstützt. Alle Eigenschaftswerte im Objekt werden vor dem Speichern in Strings umgewandelt. Sie können auch die folgende Syntax verwenden, um Objekte in Redis zu speichern:

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

Ein optionaler Rückruf kann auch weitergeleitet werden, um zu erfahren, wann der Vorgang abgeschlossen ist.

Alle Funktionen (Befehle) können mit Groß- / Kleinschreibung aufgerufen werden. Beispielsweise sind client.hmset() und client.HMSET() gleich. Listen speichern

Wenn Sie eine Liste mit Elementen speichern möchten, können Sie Redis-Listen verwenden. Um eine Liste zu speichern, verwenden Sie folgende Syntax:

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

Das obige Snippet erstellt eine Liste namens Frameworks und schiebt zwei Elemente dorthin. Die Länge der Liste beträgt also jetzt zwei. Wie Sie sehen, habe ich ein args Array an rpush . Das erste Element des Arrays stellt den Namen des Schlüssels dar, während der Rest die Elemente der Liste darstellt. Sie können auch lpush() anstelle von rpush() , um die Elemente nach links zu verschieben.

Um die Elemente der Liste lrange() können Sie die lrange() Funktion wie folgt verwenden:

client.lrange('frameworks', 0, -1, function(err, reply) {
    console.log(reply); // ['angularjs', 'backbone']
});

Beachten Sie, dass Sie alle Elemente der Liste erhalten, indem Sie -1 als drittes Argument an lrange() . Wenn Sie eine Untermenge der Liste wünschen, sollten Sie hier den Endindex übergeben.

Sets speichern

Sets ähneln Listen, aber der Unterschied ist, dass sie keine Duplikate zulassen. Wenn Sie also keine doppelten Elemente in Ihrer Liste haben möchten, können Sie einen Satz verwenden. So können wir unser vorheriges Snippet so ändern, dass ein Satz anstelle einer Liste verwendet wird.

client.sadd(['tags', 'angularjs', 'backbonejs', 'emberjs'], function(err, reply) {
    console.log(reply); // 3
});

Wie Sie sehen, erstellt die Funktion sadd() einen neuen Satz mit den angegebenen Elementen. Hier ist die Länge des Sets drei. Um die Mitglieder des Sets smembers() , verwenden Sie die Funktion smembers() wie folgt:

client.smembers('tags', function(err, reply) {
    console.log(reply);
});

Dieses Snippet ruft alle Mitglieder des Sets ab. Beachten Sie, dass die Reihenfolge beim Abrufen der Mitglieder nicht beibehalten wird.

Dies ist eine Liste der wichtigsten Datenstrukturen, die in jeder von Redis betriebenen App gefunden werden. Neben Strings, Listen, Sets und Hashwerten können Sie sortierte Sets, HyperLogLogs und mehr in Redis speichern. Wenn Sie eine vollständige Liste von Befehlen und Datenstrukturen wünschen, besuchen Sie die offizielle Redis-Dokumentation. Denken Sie daran, dass fast alle Redis-Befehle für das Client-Objekt verfügbar gemacht werden, das vom node_redis-Modul angeboten wird.

Einige wichtigere Operationen, die von node_redis unterstützt werden.

Vorhandensein von Schlüsseln prüfen

Manchmal müssen Sie möglicherweise überprüfen, ob ein Schlüssel bereits vorhanden ist, und entsprechend vorgehen. Um dies zu tun, können Sie wie folgt die exists() Funktion verwenden:

client.exists('key', function(err, reply) {
    if (reply === 1) {
        console.log('exists');
    } else {
        console.log('doesn\'t exist');
    }
});

Schlüssel löschen und ablaufen lassen

Manchmal müssen Sie einige Schlüssel löschen und sie neu initialisieren. Um die Tasten zu löschen, können Sie den Befehl del wie folgt verwenden:

client.del('frameworks', function(err, reply) {
    console.log(reply);
});

Sie können einem vorhandenen Schlüssel auch eine Ablaufzeit wie folgt zuweisen:

client.set('key1', 'val1');
client.expire('key1', 30);

Das obige Snippet weist dem Schlüssel key1 eine Ablaufzeit von 30 Sekunden zu.

Inkrementieren und Dekrementieren

Redis unterstützt auch das Inkrementieren und Dekrementieren von Schlüsseln. Um einen Schlüssel zu inkrementieren, verwenden Sie die Funktion incr() wie folgt:

client.set('key1', 10, function() {
    client.incr('key1', function(err, reply) {
        console.log(reply); // 11
    });
});

Die incr() Funktion erhöht einen Schlüsselwert um 1. Wenn Sie einen anderen Betrag incrby() , können Sie die Funktion incrby() verwenden. Um eine Taste zu dekrementieren, können Sie die Funktionen decr() und decrby() .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow