Recherche…


Remarques

Nous avons couvert les opérations de base et les plus couramment utilisées dans node_redis. Vous pouvez utiliser ce module pour exploiter toute la puissance de Redis et créer des applications Node.js vraiment sophistiquées. Vous pouvez créer beaucoup de choses intéressantes avec cette bibliothèque, par exemple une couche de mise en cache puissante, un système de messagerie Pub / Sub puissant, etc. Pour en savoir plus sur la bibliothèque, consultez leur documentation .

Commencer

Comme vous l'avez peut-être deviné, node_redis est le client Redis pour Node.js. Vous pouvez l'installer via npm en utilisant la commande suivante.

npm install redis

Une fois que vous avez installé le module node_redis, vous êtes prêt à partir. Créons un fichier simple, app.js, et voyons comment se connecter avec Redis à partir de Node.js.

app.js

var redis = require('redis');
client = redis.createClient(); //creates a new client

Par défaut, redis.createClient () utilisera 127.0.0.1 et 6379 respectivement comme nom d'hôte et port. Si vous avez un hôte / port différent, vous pouvez les fournir comme suit:

var client = redis.createClient(port, host);

Maintenant, vous pouvez effectuer une action une fois la connexion établie. En gros, il vous suffit d’écouter les événements de connexion comme indiqué ci-dessous.

client.on('connect', function() {
    console.log('connected');
});

Ainsi, l'extrait suivant va dans app.js:

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('connected');
});

Maintenant, tapez application de noeud dans le terminal pour exécuter l'application. Assurez-vous que votre serveur Redis est opérationnel avant d’exécuter cet extrait de code.

Stocker des paires clé-valeur

Maintenant que vous savez comment vous connecter à Redis à partir de Node.js, voyons comment stocker des paires clé-valeur dans le stockage Redis.

Stockage de chaînes

Toutes les commandes Redis sont exposées en tant que fonctions différentes sur l'objet client. Pour stocker une chaîne simple, utilisez la syntaxe suivante:

client.set('framework', 'AngularJS');

Ou

client.set(['framework', 'AngularJS']);

Les extraits ci-dessus stockent une chaîne simple AngularJS dans le cadre de la clé. Vous devez noter que les deux extraits de code font la même chose. La seule différence est que le premier transmet un nombre variable d'arguments tandis que le dernier transmet un tableau args à la fonction client.set() . Vous pouvez également transmettre un rappel facultatif pour obtenir une notification lorsque l'opération est terminée:

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

Si l'opération échoue pour une raison quelconque, l'argument err du rappel représente l'erreur. Pour récupérer la valeur de la clé, procédez comme suit:

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get() vous permet de récupérer une clé stockée dans Redis. La valeur de la clé est accessible via la réponse d'argument de rappel. Si la clé n'existe pas, la valeur de la réponse sera vide.

Stockage de hachage

Plusieurs fois, stocker des valeurs simples ne résoudra pas votre problème. Vous devez stocker les hashes (objets) dans Redis. Pour cela, vous pouvez utiliser la fonction hmset() comme suit:

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

L'extrait de code ci-dessus stocke un hash dans Redis qui associe chaque technologie à sa structure. Le premier argument de hmset() est le nom de la clé. Les arguments suivants représentent des paires clé-valeur. De même, hgetall() est utilisé pour récupérer la valeur de la clé. Si la clé est trouvée, le deuxième argument du rappel contiendra la valeur qui est un objet.

Notez que Redis ne prend pas en charge les objets imbriqués. Toutes les valeurs de propriété de l'objet seront forcées dans des chaînes avant d'être stockées. Vous pouvez également utiliser la syntaxe suivante pour stocker des objets dans Redis:

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

Un rappel facultatif peut également être passé pour savoir quand l'opération est terminée.

Toutes les fonctions (commandes) peuvent être appelées avec des équivalents majuscules / minuscules. Par exemple, client.hmset() et client.HMSET() sont identiques. Stockage des listes

Si vous souhaitez stocker une liste d'éléments, vous pouvez utiliser les listes Redis. Pour stocker une liste, utilisez la syntaxe suivante:

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

L'extrait de code ci-dessus crée une liste appelée frameworks et y insère deux éléments. La longueur de la liste est maintenant de deux. Comme vous pouvez le voir, j'ai passé un tableau args pour rpush . Le premier élément du tableau représente le nom de la clé tandis que le reste représente les éléments de la liste. Vous pouvez également utiliser lpush() au lieu de rpush() pour pousser les éléments vers la gauche.

Pour récupérer les éléments de la liste, vous pouvez utiliser la fonction lrange() comme suit:

client.lrange('frameworks', 0, -1, function(err, reply) {
    console.log(reply); // ['angularjs', 'backbone']
});

Notez simplement que vous obtenez tous les éléments de la liste en passant -1 comme troisième argument à lrange() . Si vous voulez un sous-ensemble de la liste, vous devez passer l'index final ici.

Jeux de stockage

Les ensembles sont similaires aux listes, mais la différence est qu'ils ne permettent pas les doublons. Donc, si vous ne voulez pas d'éléments en double dans votre liste, vous pouvez utiliser un ensemble. Voici comment nous pouvons modifier notre extrait de code précédent pour utiliser un ensemble au lieu de la liste.

client.sadd(['tags', 'angularjs', 'backbonejs', 'emberjs'], function(err, reply) {
    console.log(reply); // 3
});

Comme vous pouvez le voir, la fonction sadd() crée un nouvel ensemble avec les éléments spécifiés. Ici, la longueur de l'ensemble est de trois. Pour récupérer les membres de l'ensemble, utilisez la fonction smembers() comme suit:

client.smembers('tags', function(err, reply) {
    console.log(reply);
});

Cet extrait récupère tous les membres de l'ensemble. Notez simplement que la commande n'est pas conservée lors de la récupération des membres.

Ceci était une liste des structures de données les plus importantes trouvées dans chaque application propulsée par Redis. Mis à part les chaînes, les listes, les ensembles et les hachages, vous pouvez stocker des ensembles triés, hyperLogLogs et plus encore dans Redis. Si vous souhaitez une liste complète des commandes et des structures de données, consultez la documentation officielle Redis. N'oubliez pas que presque toutes les commandes Redis sont exposées sur l'objet client offert par le module node_redis.

Quelques opérations plus importantes prises en charge par node_redis.

Vérification de l'existence des clés

Parfois, vous devrez peut-être vérifier si une clé existe déjà et procéder en conséquence. Pour ce faire, vous pouvez utiliser la fonction exists() comme indiqué ci-dessous:

client.exists('key', function(err, reply) {
    if (reply === 1) {
        console.log('exists');
    } else {
        console.log('doesn\'t exist');
    }
});

Suppression et expiration des clés

Parfois, vous devrez effacer certaines clés et les réinitialiser. Pour effacer les touches, vous pouvez utiliser la commande del comme indiqué ci-dessous:

client.del('frameworks', function(err, reply) {
    console.log(reply);
});

Vous pouvez également donner une heure d'expiration à une clé existante comme suit:

client.set('key1', 'val1');
client.expire('key1', 30);

L'extrait de code ci-dessus attribue un délai d'expiration de 30 secondes à la touche clé1.

Incrémenter et Décrémenter

Redis prend également en charge l'incrémentation et la décrémentation des clés. Pour incrémenter une touche, utilisez la fonction incr() comme indiqué ci-dessous:

client.set('key1', 10, function() {
    client.incr('key1', function(err, reply) {
        console.log(reply); // 11
    });
});

La fonction incr() incrémente une valeur de clé de 1. Si vous devez incrémenter d’une valeur différente, vous pouvez utiliser la fonction incrby() . De même, pour décrémenter une touche, vous pouvez utiliser les fonctions comme decr() et decrby() .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow