Redis&Node.js:所有密钥
基本问题:使用Node.js我想获得我的redis数据库中的所有密钥。 当我调用键*时,我的redis数据库看起来像这样;
- AXF
- x9U
- 乐
所以每个logging我有一个唯一的关键,生成一个随机的string。 现在我想调用像foreach(键入Redis),并获得所有键在redis中。 是否有可能通过Node.js&Redis完成“SELECT * FROM Redis”类查询
当然,你需要安装nodejs
的redis
模块,可以在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