Redis& Node.js:所有键

时间:2012-10-09 06:20:19

标签: node.js redis

基本问题:使用Node.js我想获取redis数据库中的所有密钥。当我调用 keys * ;

时,我的redis db看起来像这样
  1. AXF
  2. x9U
  3. LOK
  4. 因此我拥有的每条记录都有一个唯一的密钥,生成为随机字符串。现在我想打电话给 foreach(Redis中的密钥)并获取redis中的所有密钥。是否可以使用Node.js&amp ;;完成“SELECT * FROM Redis”-like 查询。 Redis

3 个答案:

答案 0 :(得分:37)

当然,您需要安装redis的{​​{1}}模块,该模块位于https://github.com/mranney/node_redis

nodejs

<强>更新

以上命令不再可用。您可以使用以下内容:

npm install node_redis

然后你会这样做:

npm install redis

一般来说,您不希望总是返回所有键(性能对于较大的数据集会很糟糕),但如果您只是测试一下,这将会有效。 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]); } }); 文档中有一个很好的警告:

  

警告:将KEYS视为仅应在其中使用的命令   生产环境非常谨慎。它可能会破坏性能   当它针对大型数据库执行时。这个命令是有意的   用于调试和特殊操作,例如更改密钥空间   布局。不要在常规应用程序代码中使用KEYS。如果你是   想一想在键空间的子集中查找键的方法,请考虑   使用套装。

答案 1 :(得分:6)

安装node_redis

npm install node_redis

然后我执行以下操作来获取所有密钥的数据

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

答案 2 :(得分:2)

npm install node_redis 

现在不再可用了。改为使用它 -

npm install redis