sql >> Databasteknik >  >> NoSQL >> Redis

Hur man använder Redis från Node.js

Ett av de mest populära biblioteken att arbeta med en Redis-server från en Node.js-app är node-redis , tillgänglig på https://github.com/NodeRedis/node-redis.

Installera biblioteket i ditt projekt:

npm install redis

Tips:glöm inte att först köra npm init -y om projektet är helt nytt och du inte har en package.json fil redan.

Anslut till Redis-instansen

När biblioteket är installerat kräver du det i ditt projekt med

const redis = require('redis')

eller

import redis from 'redis'

När du har redis objekt, skapa en ny klient med

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

och anslut med (inuti en asynkronfunktion):

await client.connect()

När du väl har kunden kan vi utföra alla de saker vi vet som Redis kan göra.

För att stänga anslutningen, ring:

client.quit()

Lagra och hämta nyckelvärden

Lagra ett nyckelvärdespar i redis med set() :

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

Exempel:

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

Om du kör KEYS * i redis-cli på en ren Redis-server kommer du att se de två nycklarna:

Du kan få värdet lagrat i en nyckel med get() :

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

Ta bort en nyckel-/värdesträng med

client.del("names")

Arbeta med listor

I Redis kan vi arbeta med listor med hjälp av

  • LPUSH
  • RPUSH
  • LTRIM
  • LRANGE

kommandon som vi introducerade i Redis-modulen. De mappar direkt som client objektmetoder.

Skapa en lista med

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

Skjut ett nytt objekt längst ned i listan:

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

Eller högst upp på listan:

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

Lista alla objekt i en lista med:

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

Släpp objekt från en lista med

client.rPop('names')

Ta bort en lista med

client.del('names')

Arbeta med set

I Redis arbetar vi med set med

  • SADD
  • SPOP
  • SMEMBERS .

och andra Redis-kommandon, som mappar direkt som client objektmetoder.

Skapa en uppsättning med

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

Lägg till fler objekt i uppsättningen:

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

Du kan lägga till flera samtidigt:

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

även genom att skicka en array:

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

Lista alla objekt i en uppsättning med:

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

Släpp ett slumpmässigt objekt från en uppsättning med:

client.sPop('names')

Lägg till en andra parameter för att släppa flera slumpmässiga objekt:

client.sPop('names', 3)

Ta bort en uppsättning med

client.del('names')

Arbeta med hash

I Redis arbetar vi med hash med hjälp av en uppsättning kommandon som inkluderar

  • HMSET
  • HGETALL
  • HSET
  • HINCRBY .

och andra kommandon som vi introducerade i Redis-modulen, som mappar direkt som client objektmetoder.

Skapa en hash med

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

För att få alla egenskaper för en användare, använd HGETALL:

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

Du kan uppdatera en hash-egenskap med HSET:

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

Du kan öka ett värde lagrat i en hash med HINCRBY:

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

Ta bort en hash med

client.del('person:1')

Prenumerationer

Prenumerationer är en fantastisk funktion hos Redis, som gör att vi kan göra riktigt snygga saker i Node.js.

En utgivare skickar ett meddelande på en kanal. Flera prenumeranter får det.

Prenumerera på en kanal med

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

Publicera på en kanal med client.publish('<channel>', '<message>')

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

Tänk på att du inte kan publicera och prenumerera från samma client instans.

För att göra det i samma app, skapa två klienter:

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

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

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

  1. MongoDb med FastAPI

  2. Har mongoDB problem med återanslutningen eller gör jag det fel?

  3. 4 sätt att uppdatera ett dokument i MongoDB

  4. Redis + Node.js - hur hämtar jag värdena