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 forbindelsenclient.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')