2017-02-16 5 views
1

の数を見つけるために、どのように、私は誰もがそれを行う方法を知っているデータベースの数を返しある種のクエリを実行したいと思います。は、だから私はRedisのから読み込んノードアプリを書いていますのRedis(NodeJS)内のデータベース

だから今私が持っている基本的にはどのようなデータベース内のすべてのキーを取得する方法ですが、私は、より高いレベルで、私はすべてのデータベースを反復処理して、すべてのキーを取得したいしたいです。これは、現在のDBのすべてのキーを取得するためのコードです。

const client = redis.createClient({host: "127.0.0.1", port: 6379}); 
client.multi() 
    .keys('*', function (err, replies) { 
     console.log("MULTI got " + replies.length + " replies"); 
     let dbs = [replies]; 
     let dbData = {}; 
     replies.forEach(function (reply, index) { 
      client.get(reply, function (err, data) { 
       console.log(reply + " " +data); 
      }); 
     }); 

    }) 
    .exec(function (err, replies) { }); 

答えて

4

ソリューション1述べた@carebdayrvisのよう

、データベースの情報を取得するためにINFOコマンドを使用して、データベースの数を取得するための情報を解析することができます。

このソリューションには二つの問題があります:

  1. それが唯一の空されていないデータベースの情報を返しますが。データベースの総数は表示されません。
  2. 情報テキストの変更の形式は、あなたが解析コードを書き直す必要がある場合。データベースの合計数を取得するための

ソリューション2

コールCONFIG GET DATABASES。この結果には、空データベースと空でないデータベースの両方が含まれます。 SELECT db-indexDBSIZEコマンドを使用して、空でないデータベースを特定できます。

このソリューションの利点は、複数のプログラム可能だということです。

その他の項目

ところで、KEYSは、本番環境では使用しないでください、それは長い時間のためにRedisのをブロックする可能性があります。代わりにSCANコマンドを使用することを検討する必要があります。

+0

私は両方のデータベースとスキャンコマンドのために必要な正確に何を感謝します。 – YourGoodFriend

+0

nodeの正確な構文は次のとおりです。 client.config(['get'、 'databases']、(err、reply)=> { numberOfDbs = parseInt(reply [1]); client.quit(); return resolve(numberOfDbs); }); これは配列として戻ってくると、アレイ内の第二のものである(したがって返信[1]) – YourGoodFriend

1

This redis command's出力にはその情報が含まれています。あなたはそれをノードクライアントから呼び出すことができるはずです。

関連する問題