sql >> Database teknologi >  >> NoSQL >> Redis

Sådan bruger du Redis fra Node.js

Et af de mest populære biblioteker til at arbejde med en Redis-server fra en Node.js-app er node-redis , tilgængelig på https://github.com/NodeRedis/node-redis.

Installer biblioteket i dit projekt:

npm install redis

Tip:Glem ikke først at køre npm init -y hvis projektet er helt nyt, og du ikke har en package.json fil allerede.

Opret forbindelse til Redis-instansen

Når biblioteket er installeret, skal du kræve det i dit projekt ved hjælp af

const redis = require('redis')

eller

import redis from 'redis'

Når du har redis objekt, skal du oprette en ny klient ved hjælp af

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

og opret forbindelse ved hjælp af (inde i en async-funktion):

await client.connect()

Når først du har kunden, kan vi udføre alle de ting, vi ved, at Redis kan.

Ring til:

for at lukke forbindelsen
client.quit()

Gem og hent nøgleværdier

Gem et nøgleværdipar i redis ved hjælp af set() :

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

Eksempel:

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

Hvis du kører KEYS * i redis-cli på en ren Redis-server, vil du se de to nøgler vises:

Du kan få værdien gemt i en nøgle ved hjælp af get() :

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

Slet en nøgle-/værdistreng ved hjælp af

client.del("names")

Arbejde med lister

I Redis kan vi arbejde med lister ved hjælp af

  • LPUSH
  • RPUSH
  • LTRIM
  • LRANGE

kommandoer, vi introducerede i Redis-modulet. De kortlægges direkte som client objektmetoder.

Opret en liste ved hjælp af

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

Skub et nyt element til bunden af ​​listen:

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

Eller øverst på listen:

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

Liste alle elementerne på en liste ved hjælp af:

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

Slip elementer fra en liste ved hjælp af

client.rPop('names')

Slet en liste ved hjælp af

client.del('names')

Arbejde med sæt

I Redis arbejder vi med sæt vha.

  • SADD
  • SPOP
  • SMEMBERS .

og andre Redis-kommandoer, der kortlægger direkte som client objektmetoder.

Opret et sæt ved hjælp af

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

Tilføj flere elementer til sættet:

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

Du kan tilføje flere på én gang:

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

også ved at sende et array:

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

Liste alle elementerne i et sæt ved hjælp af:

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

Slip et tilfældigt element fra et sæt ved at bruge:

client.sPop('names')

Tilføj en anden parameter for at slippe flere tilfældige elementer:

client.sPop('names', 3)

Slet et sæt ved hjælp af

client.del('names')

Arbejde med hashes

I Redis arbejder vi med hashes ved hjælp af et sæt kommandoer, der inkluderer

  • HMSET
  • HGETALL
  • HSET
  • HINCRBY .

og andre kommandoer, vi introducerede i Redis-modulet, der kortlægger direkte som client objektmetoder.

Opret en hash ved hjælp af

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

For at få alle egenskaberne for en bruger, brug HGETALL:

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

Du kan opdatere en hash-egenskab ved hjælp af HSET:

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

Du kan øge en værdi gemt i en hash ved at bruge HINCRBY:

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

Slet en hash ved hjælp af

client.del('person:1')

Abonnementer

Abonnementer er en fantastisk funktion ved Redis, der giver os mulighed for at gøre virkelig smarte ting i Node.js.

En udgiver sender en besked på en kanal. Flere abonnenter modtager det.

Abonner på en kanal ved hjælp af

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

Udgiv til en kanal ved hjælp af client.publish('<channel>', '<message>')

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

Vær opmærksom på, at du ikke kan udgive og abonnere fra den samme client eksempel.

For at gøre det i den samme app skal du oprette 2 klienter:

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

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

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

  1. Hvordan bruger jeg forbindelsespuljer korrekt i redis?

  2. Er det dårligt at ændre _id-type i MongoDB til heltal?

  3. Adgang til MongoDB fra Go

  4. MongoDB:Tæller hvor mange af hver adskilte værdier der er?