基本的な質問:Node.jsを使用して、redis dbのすべてのキーを取得したいと思います。私が呼び出すと、私のredis dbは次のようになります キー*;
だから私が持っている各レコードは、ランダムな文字列として生成された一意のキーを持っています。今私は次のようなものを呼び出したいと思います foreach(Redisのキー) そして、redisのすべてのキーを取得します。達成することは可能でしょうか 「SELECT * FROM Redis」のような Node.jsとRedisを使用したクエリ
確かに、redis
用のnodejs
モジュールをインストールする必要があります。これは にありますhttps://github.com/mranney/node_redis 。
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]);
}
});
一般的に言えば、常にすべてのキーを返す必要はありませんが(大規模なデータセットの場合はパフォーマンスが低下します)、テストするだけで問題は解決します。 Redis
のドキュメントにも警告が表示されています:
警告:KEYSは、実稼働環境でのみ細心の注意を払って使用する必要があるコマンドと見なしてください。大規模なデータベースに対して実行すると、パフォーマンスが低下する可能性があります。このコマンドは、デバッグや、キースペースレイアウトの変更などの特別な操作を目的としています。通常のアプリケーションコードではKEYSを使用しないでください。キースペースのサブセットでキーを見つける方法を探している場合は、セットの使用を検討してください。
Nodejs用のredisクライアントをインストールする
npm install 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