Redis & Node.js: All keys

Basic question: Using Node.js I would like to get all the keys in my redis db. My redis db looks like this when I call keys *;

  1. aXF
  2. x9U
  3. lOk

So each record I have, has a unique key, generated as a random string. Now I would like to call something like foreach(key in Redis) and get all keys in the redis. Would it be possible to accomplish a "SELECT * FROM Redis"-like query with Node.js & Redis

Answers


Sure, you'll need to install the redis module for nodejs which can be found at https://github.com/mranney/node_redis.

npm install node_redis

Update

The above command is no longer available. you can use the following:

npm install redis

Then you would do:

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]);
  }
});        

Generally speaking you won't want to always return all of the keys (performance will be bad for larger data sets), but this will work if you are just testing things out. There is even a nice warning in the Redis documentation:

Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using sets.


Install node_redis

npm install node_redis

Then I do the following to get all key's data

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) {});

npm install node_redis 

is no more available now. Use this instead -

npm install redis

Need Your Help

How can I move a URL via 301 redirect and retain the page's Facebook likes and Open Graph information?

redirect facebook-like opengraph

I understand the og:url meta tag is the canonical url for the resource in the open graph.

Xcode doesn't recognize NSLabel

xcode macos object import label

I'm trying to create a NSLabel for my osx app however Xcode is not recognizing the type "NSLabel" as valid and is suggesting I try "NSPanel" instead.