基本问题:使用Node.js我想获取redis数据库中的所有密钥。当我调用 keys * ;
时,我的redis db看起来像这样因此我拥有的每条记录都有一个唯一的密钥,生成为随机字符串。现在我想打电话给 foreach(Redis中的密钥)并获取redis中的所有密钥。是否可以使用Node.js&amp ;;完成“SELECT * FROM Redis”-like 查询。 Redis
答案 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