Redis&Node.js:所有密钥

基本问题:使用Node.js我想获得我的redis数据库中的所有密钥。 当我调用键*时,我的redis数据库看起来像这样;

  1. AXF
  2. x9U

所以每个logging我有一个唯一的关键,生成一个随机的string。 现在我想调用像foreach(键入Redis),并获得所有键在redis中。 是否有可能通过Node.js&Redis完成“SELECT * FROM Redis”类查询

当然,你需要安装nodejsredis模块,可以在https://github.com/mranney/node_redisfind。

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

一般来说,你不会希望总是返回所有的密钥(性能对于较大的数据集来说是不好的),但是如果你只是在testing一些东西,那么这将会起作用。 Redis文档中甚至有一个很好的警告:

警告:将KEYS看作只能在生产环境中谨慎使用的命令。 对大型数据库执行操作可能会导致性能下降。 此命令用于debugging和特殊操作,例如更改您的键盘空间布局。 不要在您的常规应用程序代码中使用KEYS。 如果您正在寻找一种方法在您的密钥空间的子集中查找密钥,请考虑使用集合。

安装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) {}); 
 npm install node_redis 

现在已经没有了。 用这个代替 –

 npm install redis