2012-11-02 5 views
6

です。Redisでは、16種類の異なるデータベース(0〜15)にデータを格納できます。データベースごとに使用メモリを&のディスク容量にする方法はありますか? INFOコマンドは、データベースごとのキーの数のみをリストします。データベースごとのメモリ使用率は

答えて

2

いいえ、各データベースを個別に制御することはできません。これらの「データベース」は、データを論理的に分割するためのものです。

あなたができること(特定の要件とセットアップによって異なります)は複数の赤いインスタンスを回転させ、それぞれ異なるタスクを実行し、それぞれにはメモリキャップ付きのredis.confファイルがあります。少なくともRedisレベルではないにしても、ディスクスペースには上限はありません。

サイドノート: 16個のデータベース番号がハードコードされていないことに注意してください。redis.confに設定することができます。

+0

は、これは別のオプションですが、私はどのくらいの各インスタンスのメモリ消費量のオーバーヘッドを確認していません。 – user209377

+0

しかしこれは_the_オプションです –

4

はあなたが現実の10%以内である必要があり、データベースによっておおよそのメモリ使用量を取得することができますredis-rdb-tools

を参照してください。

+0

私はそれを試してみますが、「現実の10%以内」と言って、あなたのプログラムが報告しているものよりも10%多く言っていますよね? [この質問](http://stackoverflow.com/questions/7638542/redis-show-database-size-size-for-keys)のように、デバッグオブジェクトを使用して各キーのシリアル化された長さを取得すると、より良い下限になります?私は確認する必要があります。 – user209377

+0

小さなオブジェクトの場合、シリアル化された長さは正確です。しかし、大きなオブジェクトの場合、それはひどく間違っています。 Redis-rdb-toolsは、Redisのデータ構造をリバースエンジニアリングして、使用されているメモリを調べます。詳細は、https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/rdbtools/memprofiler.pyのコメントを参照してください。 –

0

Redis DBのすべてのキーでdumpを呼び出して、使用された合計バイト数を測定しました。これにより、サーバーが遅くなり、しばらく時間がかかります。サイズはdumpのように見えますが、実際のメモリ使用量より約4倍少なくなります。これらの数字は、どのデータベースが最も多くのスペースを使用しているかを示します。ここで

は私のコードです: https://gist.github.com/mathieulongtin/fa2efceb7b546cbb6626ee899e2cfa0b

関連する問題