Eine der beliebtesten Bibliotheken für die Arbeit mit einem Redis-Server aus einer Node.js-App ist node-redis
, verfügbar unter https://github.com/NodeRedis/node-redis.
Installieren Sie die Bibliothek in Ihrem Projekt:
npm install redis
Tipp:Vergessen Sie nicht, zuerst npm init -y
auszuführen wenn das Projekt brandneu ist und Sie keine package.json
haben Datei bereits.
Mit der Redis-Instanz verbinden
Sobald die Bibliothek installiert ist, fordern Sie sie in Ihrem Projekt mit
anconst redis = require('redis')
oder
import redis from 'redis'
Sobald Sie die redis
Objekt, erstellen Sie einen neuen Client mit
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
und verbinden Sie sich mit (innerhalb einer asynchronen Funktion):
await client.connect()
Sobald Sie den Client haben, können wir all die Dinge ausführen, von denen wir wissen, dass sie Redis können.
Um die Verbindung zu beenden, rufen Sie auf:
client.quit()
Schlüsselwerte speichern und abrufen
Speichern Sie ein Schlüsselwertpaar mit set()
in redis :
client.set("<key>", "<value>")
Beispiel:
client.set("name", "Flavio")
client.set("age", 37)
Wenn Sie KEYS *
ausführen in redis-cli
Auf einem sauberen Redis-Server sehen Sie die beiden Schlüssel:
Sie können den in einem Schlüssel gespeicherten Wert mit get()
abrufen :
const value = await client.get("name")
Löschen Sie eine Schlüssel/Wert-Zeichenfolge mit
client.del("names")
Arbeiten mit Listen
In Redis können wir mit Listen arbeiten, indem wir die
verwendenLPUSH
RPUSH
LTRIM
LRANGE
Befehle, die wir im Redis-Modul eingeführt haben. Sie werden direkt als client
abgebildet Objektmethoden.
Erstellen Sie eine Liste mit
client.lPush('names', 'Flavio')
Schieben Sie ein neues Element an das Ende der Liste:
client.rPush('names', 'Roger')
Oder ganz oben in der Liste:
client.lPush('names', 'Syd')
Listen Sie alle Elemente in einer Liste auf mit:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Löschen Sie Elemente aus einer Liste mit
client.rPop('names')
Löschen Sie eine Liste mit
client.del('names')
Arbeiten mit Sets
In Redis arbeiten wir mit Sets unter Verwendung von
SADD
SPOP
SMEMBERS
.
und andere Redis-Befehle, die direkt als client
zugeordnet werden Objektmethoden.
Erstellen Sie einen Satz mit
client.sAdd('names', 'Flavio')
Weitere Artikel zum Set hinzufügen:
client.sAdd('names', 'Roger')
Sie können mehrere auf einmal hinzufügen:
client.sAdd('names', 'Roger', 'Syd')
auch durch Übergabe eines Arrays:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
Listen Sie alle Artikel in einem Set auf mit:
const names = await client.sMembers('names')
Lassen Sie einen zufälligen Gegenstand aus einem Set fallen mit:
client.sPop('names')
Füge einen zweiten Parameter hinzu, um mehrere zufällige Gegenstände fallen zu lassen:
client.sPop('names', 3)
Löschen Sie einen Satz mit
client.del('names')
Arbeiten mit Hashes
In Redis arbeiten wir mit Hashes, indem wir eine Reihe von Befehlen verwenden, die
enthaltenHMSET
HGETALL
HSET
HINCRBY
.
und andere Befehle, die wir im Redis-Modul eingeführt haben, die direkt als client
zugeordnet werden Objektmethoden.
Erstellen Sie einen Hash mit
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
Um alle Eigenschaften eines Benutzers abzurufen, verwenden Sie HGETALL:
const items = client.hGetAll('person:1')
Sie können eine Hash-Eigenschaft mit HSET aktualisieren:
client.hSet('person:1', 'age', 38)
Sie können einen in einem Hash gespeicherten Wert mit HINCRBY:
erhöhenclient.hIncrBy('person:1', 'age', 1)
Löschen Sie einen Hash mit
client.del('person:1')
Abonnements
Abonnements sind eine erstaunliche Funktion von Redis, die es uns ermöglicht, wirklich ausgefallene Dinge in Node.js zu tun.
Ein Publisher sendet eine Nachricht auf einem Kanal. Mehrere Abonnenten erhalten es.
Abonnieren Sie einen Kanal mit
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
Veröffentliche in einem Kanal mit client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
Beachten Sie, dass Sie nicht von demselben client
aus veröffentlichen und abonnieren können Beispiel.
Erstellen Sie dazu in derselben App zwei Clients:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')