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