Jedną z najpopularniejszych bibliotek do pracy z serwerem Redis z aplikacji Node.js jest node-redis
, dostępny pod adresem https://github.com/NodeRedis/node-redis.
Zainstaluj bibliotekę w swoim projekcie:
npm install redis
Wskazówka:nie zapomnij najpierw uruchomić npm init -y
jeśli projekt jest nowy i nie masz pliku package.json
plik już.
Połącz z instancją Redis
Gdy biblioteka zostanie zainstalowana, wymagaj jej w swoim projekcie za pomocą
const redis = require('redis')
lub
import redis from 'redis'
Gdy masz redis
obiekt, utwórz nowego klienta za pomocą
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
i połącz się za pomocą (wewnątrz funkcji asynchronicznej):
await client.connect()
Gdy już masz klienta, możemy wykonywać wszystkie rzeczy, o których wiemy, że potrafi Redis.
Aby zakończyć połączenie, zadzwoń:
client.quit()
Przechowuj i pobieraj wartości kluczy
Przechowuj parę klucz-wartość w redis za pomocą set()
:
client.set("<key>", "<value>")
Przykład:
client.set("name", "Flavio")
client.set("age", 37)
Jeśli uruchomisz KEYS *
w redis-cli
na czystym serwerze Redis zobaczysz dwa klawisze:
Możesz uzyskać wartość przechowywaną w kluczu za pomocą get()
:
const value = await client.get("name")
Usuń ciąg klucz/wartość za pomocą
client.del("names")
Praca z listami
W Redis możemy pracować z listami za pomocą
LPUSH
RPUSH
LTRIM
LRANGE
polecenia, które wprowadziliśmy w module Redis. Są mapowane bezpośrednio jako client
metody obiektowe.
Utwórz listę za pomocą
client.lPush('names', 'Flavio')
Przesuń nowy element na dół listy:
client.rPush('names', 'Roger')
Lub na górze listy:
client.lPush('names', 'Syd')
Wymień wszystkie pozycje na liście za pomocą:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Upuść elementy z listy za pomocą
client.rPop('names')
Usuń listę za pomocą
client.del('names')
Praca z zestawami
W Redis pracujemy z zestawami za pomocą
SADD
SPOP
SMEMBERS
.
i inne polecenia Redis, które są mapowane bezpośrednio jako client
metody obiektowe.
Utwórz zestaw za pomocą
client.sAdd('names', 'Flavio')
Dodaj więcej elementów do zestawu:
client.sAdd('names', 'Roger')
Możesz dodać kilka naraz:
client.sAdd('names', 'Roger', 'Syd')
również przez przekazanie tablicy:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
Wymień wszystkie elementy w zestawie za pomocą:
const names = await client.sMembers('names')
Upuść losowy przedmiot z zestawu za pomocą:
client.sPop('names')
Dodaj drugi parametr, aby upuścić wiele losowych przedmiotów:
client.sPop('names', 3)
Usuń zestaw za pomocą
client.del('names')
Praca z hashami
W Redis pracujemy z hashami za pomocą zestawu poleceń, które zawierają
HMSET
HGETALL
HSET
HINCRBY
.
i inne polecenia, które wprowadziliśmy w module Redis, które są mapowane bezpośrednio jako client
metody obiektowe.
Utwórz skrót za pomocą
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
Aby uzyskać wszystkie właściwości użytkownika, użyj HGETALL:
const items = client.hGetAll('person:1')
Możesz zaktualizować właściwość hash za pomocą HSET:
client.hSet('person:1', 'age', 38)
Możesz zwiększyć wartość przechowywaną w hashu za pomocą HINCRBY:
client.hIncrBy('person:1', 'age', 1)
Usuń skrót za pomocą
client.del('person:1')
Subskrypcje
Subskrypcje to niesamowita funkcja Redis, która umożliwia nam robienie naprawdę wymyślnych rzeczy w Node.js.
Wydawca wysyła wiadomość na kanale. Otrzymuje go wielu subskrybentów.
Subskrybuj kanał za pomocą
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
Opublikuj na kanale za pomocą client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
Pamiętaj, że nie możesz publikować i subskrybować od tego samego client
przykład.
Aby to zrobić w tej samej aplikacji, utwórz 2 klientów:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')