sql >> Database >  >> NoSQL >> Redis

Hoe Redis van Node.js te gebruiken

Een van de meest populaire bibliotheken om met een Redis-server te werken vanuit een Node.js-app is node-redis , beschikbaar op https://github.com/NodeRedis/node-redis.

Installeer de bibliotheek in uw project:

npm install redis

Tip:vergeet niet om eerst npm init -y . uit te voeren als het project gloednieuw is en u geen package.json . heeft bestand al.

Verbinding maken met de Redis-instantie

Nadat de bibliotheek is geïnstalleerd, moet u deze in uw project gebruiken met

const redis = require('redis')

of

import redis from 'redis'

Zodra u de redis object, maak een nieuwe klant aan met

const client = redis.createClient({
  url: 'redis://YOUR REDIS INSTANCE URL'
})

en maak verbinding met (binnen een asynchrone functie):

await client.connect()

Zodra u de klant heeft, kunnen we alle dingen uitvoeren waarvan we weten dat Redis kan doen.

Om de verbinding te verbreken, bel:

client.quit()

Sleutelwaarden opslaan en ophalen

Sla een sleutelwaardepaar op in redis met behulp van set() :

client.set("<key>", "<value>")

Voorbeeld:

client.set("name", "Flavio")
client.set("age", 37)

Als u KEYS * . uitvoert in redis-cli op een schone Redis-server zie je de twee sleutels verschijnen:

U kunt de waarde in een sleutel opslaan met get() :

const value = await client.get("name")

Verwijder een sleutel/waarde-tekenreeks met

client.del("names")

Werken met lijsten

In Redis kunnen we met lijsten werken met de

  • LPUSH
  • RPUSH
  • LTRIM
  • LRANGE

commando's die we in de Redis-module hebben geïntroduceerd. Ze worden rechtstreeks toegewezen als client objectmethoden.

Maak een lijst met

client.lPush('names', 'Flavio')

Duw een nieuw item onderaan de lijst:

client.rPush('names', 'Roger')

Of bovenaan de lijst:

client.lPush('names', 'Syd')

Maak een lijst van alle items in een lijst met:

const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]

Zet items uit een lijst met

client.rPop('names')

Een lijst verwijderen met

client.del('names')

Werken met sets

In Redis werken we met sets met behulp van

  • SADD
  • SPOP
  • SMEMBERS .

en andere Redis-commando's, die direct als client worden toegewezen objectmethoden.

Maak een set met

client.sAdd('names', 'Flavio')

Voeg meer items toe aan de set:

client.sAdd('names', 'Roger')

U kunt meerdere tegelijk toevoegen:

client.sAdd('names', 'Roger', 'Syd')

ook door een array door te geven:

const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)

Maak een lijst van alle items in een set met:

const names = await client.sMembers('names')

Laat een willekeurig item uit een set vallen met:

client.sPop('names')

Voeg een tweede parameter toe om meerdere willekeurige items te laten vallen:

client.sPop('names', 3)

Een set verwijderen met

client.del('names')

Werken met hashes

In Redis werken we met hashes met behulp van een reeks opdrachten die

. bevatten
  • HMSET
  • HGETALL
  • HSET
  • HINCRBY .

en andere commando's die we in de Redis-module hebben geïntroduceerd, die direct als client . toewijzen objectmethoden.

Maak een hash met

client.hSet('person:1', 'name', 'Flavio', 'age', 37)

Gebruik HGETALL om alle eigenschappen van een gebruiker te krijgen:

const items = client.hGetAll('person:1')

U kunt een hash-eigenschap bijwerken met HSET:

client.hSet('person:1', 'age', 38)

U kunt een waarde die is opgeslagen in een hash verhogen met HINCRBY:

client.hIncrBy('person:1', 'age', 1)

Een hash verwijderen met

client.del('person:1')

Abonnementen

Abonnementen zijn een geweldige functie van Redis, waardoor we echt mooie dingen kunnen doen in Node.js.

Een uitgever stuurt een bericht op een kanaal. Meerdere abonnees ontvangen het.

Abonneer je op een kanaal met

await subscriber.subscribe('dogs', (message) => {
  console.log(message);
})

Publiceer naar een kanaal met client.publish('<channel>', '<message>')

client.publish('dogs', 'Roger')

Houd er rekening mee dat u niet kunt publiceren en u kunt abonneren vanaf dezelfde client instantie.

Om dit in dezelfde app te doen, maakt u 2 clients:

const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })

await subscriber.subscribe('dogs', (message) => {
  console.log(channel, message);
})

publisher.publish('dogs', 'Roger')

  1. Toegang tot gedockte redis vanaf de Windows-host

  2. MongoDB:aggregeer $project add-veld met statische waarde

  3. Django, Redis:waar verbindingscode te plaatsen

  4. Witruimten (vooraf en achteraan) verwijderen uit tekenreekswaarde