Redis
 sql >> Datenbank >  >> NoSQL >> Redis

So verwenden Sie Redis von Node.js

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

an
const 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

verwenden
  • LPUSH
  • 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

enthalten
  • HMSET
  • 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öhen
client.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')