Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak korzystać z Redis z Node.js

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ekspresowa sesja zmiany każdego żądania

  2. redis przechowuje 128-bitową liczbę

  3. Jak prawidłowo korzystać z pul połączeń w redis?

  4. Funkcja transmisji socket.io i architektura Redis pub/sub

  5. Laravel - Uruchamianie zadań w sekwencji