web-dev-qa-db-fra.com

Redis et Node.js: toutes les clés

Question de base: en utilisant Node.js, je voudrais obtenir toutes les clés de ma base de données redis. Mon redis db ressemble à ceci quand j'appelle clés *;

  1. aXF
  2. x9U
  3. lOk

Donc, chaque enregistrement que j'ai, a une clé unique, générée sous forme de chaîne aléatoire. Maintenant, je voudrais appeler quelque chose comme foreach (clé dans Redis) et obtenez toutes les clés dans le redis. Serait-il possible de réaliser un "SELECT * FROM Redis" -like requête avec Node.js & Redis

22
Ali

Bien sûr, vous devrez installer le module redis pour nodejs qui se trouve sur https://github.com/mranney/node_redis .

npm install node_redis

Mise à jour

La commande ci-dessus n'est plus disponible. vous pouvez utiliser les éléments suivants:

npm install redis

Ensuite, vous feriez:

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

client.keys('*', function (err, keys) {
  if (err) return console.log(err);

  for(var i = 0, len = keys.length; i < len; i++) {
    console.log(keys[i]);
  }
});        

En règle générale, vous ne voudrez pas toujours renvoyer toutes les clés (les performances seront mauvaises pour les ensembles de données plus volumineux), mais cela fonctionnera si vous testez simplement les choses. Il y a même un bel avertissement dans la documentation Redis:

Avertissement: considérez KEYS comme une commande qui ne doit être utilisée que dans des environnements de production avec une extrême prudence. Il peut ruiner les performances lorsqu'il est exécuté sur de grandes bases de données. Cette commande est destinée au débogage et aux opérations spéciales, telles que la modification de la disposition de votre espace de clés. N'utilisez pas KEYS dans votre code d'application habituel. Si vous cherchez un moyen de trouver des clés dans un sous-ensemble de votre espace de clés, pensez à utiliser des ensembles.

44
Bill

Installer le client redis pour nodejs

npm install redis

Ensuite, je fais ce qui suit pour obtenir toutes les données de clé

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

client.multi()
    .keys('*', function (err, replies) {
        // NOTE: code in this callback is NOT atomic
        // this only happens after the the .exec call finishes.

        console.log("MULTI got " + replies.length + " replies");

        replies.forEach(function (reply, index) {
            console.log("Reply " + index + ": " + reply.toString());
            client.get(reply, function(err, data){
                    console.log(data);
            });
        });

    })
    .exec(function (err, replies) {});
6
Carlos Júlio
npm install node_redis 

n'est plus disponible maintenant. Utilisez-le à la place -

npm install redis
2
Arthas