Redis
 sql >> Base de données >  >> NoSQL >> Redis

Comment utiliser Redis depuis Node.js

L'une des bibliothèques les plus populaires pour travailler avec un serveur Redis à partir d'une application Node.js est node-redis , disponible sur https://github.com/NodeRedis/node-redis.

Installez la bibliothèque dans votre projet :

npm install redis

Astuce :n'oubliez pas d'exécuter d'abord npm init -y si le projet est tout nouveau et que vous n'avez pas de package.json fichier déjà.

Se connecter à l'instance Redis

Une fois la bibliothèque installée, exigez-la dans votre projet en utilisant

const redis = require('redis')

ou

import redis from 'redis'

Une fois que vous avez le redis objet, créez un nouveau client en utilisant

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

et connectez-vous en utilisant (dans une fonction asynchrone) :

await client.connect()

Une fois que vous avez le client, nous pouvons effectuer tout ce que nous savons que Redis peut faire.

Pour fermer la connexion, appelez :

client.quit()

Stocker et récupérer les valeurs clés

Stockez une paire clé-valeur dans redis en utilisant set() :

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

Exemple :

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

Si vous exécutez KEYS * dans redis-cli sur un serveur Redis propre, vous verrez apparaître les deux clés :

Vous pouvez obtenir la valeur stockée dans une clé en utilisant get() :

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

Supprimer une chaîne clé/valeur à l'aide de

client.del("names")

Travailler avec des listes

Dans Redis, nous pouvons travailler avec des listes en utilisant le

  • LPUSH
  • RPUSH
  • LTRIM
  • LRANGE

commandes que nous avons introduites dans le module Redis. Ils mappent directement en tant que client méthodes objet.

Créer une liste à l'aide de

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

Poussez un nouvel élément en bas de la liste :

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

Ou en haut de la liste :

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

Lister tous les éléments d'une liste en utilisant :

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

Déposez des éléments d'une liste à l'aide de

client.rPop('names')

Supprimer une liste à l'aide de

client.del('names')

Travailler avec des ensembles

Dans Redis, nous travaillons avec des ensembles utilisant

  • SADD
  • SPOP
  • SMEMBERS .

et d'autres commandes Redis, qui correspondent directement en tant que client méthodes objet.

Créer un ensemble à l'aide de

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

Ajoutez d'autres éléments à l'ensemble :

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

Vous pouvez en ajouter plusieurs à la fois :

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

également en passant un tableau :

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

Répertorier tous les éléments d'un ensemble en utilisant :

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

Déposez un objet aléatoire d'un ensemble en utilisant :

client.sPop('names')

Ajoutez un deuxième paramètre pour supprimer plusieurs éléments aléatoires :

client.sPop('names', 3)

Supprimer un ensemble à l'aide de

client.del('names')

Travailler avec des hachages

Dans Redis, nous travaillons avec des hachages à l'aide d'un ensemble de commandes qui incluent

  • HMSET
  • HGETALL
  • HSET
  • HINCRBY .

et d'autres commandes que nous avons introduites dans le module Redis, qui mappent directement en tant que client méthodes objet.

Créez un hachage en utilisant

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

Pour obtenir toutes les propriétés d'un utilisateur, utilisez HGETALL :

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

Vous pouvez mettre à jour une propriété de hachage à l'aide de HSET :

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

Vous pouvez incrémenter une valeur stockée dans un hachage en utilisant HINCRBY :

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

Supprimer un hachage à l'aide de

client.del('person:1')

Abonnements

Les abonnements sont une fonctionnalité incroyable de Redis, nous permettant de faire des choses vraiment fantaisistes dans Node.js.

Un éditeur envoie un message sur un canal. Plusieurs abonnés le reçoivent.

Abonnez-vous à une chaîne en utilisant

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

Publier sur un canal en utilisant client.publish('<channel>', '<message>')

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

Sachez que vous ne pouvez pas publier et vous abonner depuis le même client exemple.

Pour cela dans la même application, créez 2 clients :

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

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

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