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