2011-01-19 4 views
25

Redisのデータベースサイズとメモリの比率はどのくらいですか?Redis:Database Size to Memory Ratio?

たとえば、80MBのデータベースがある場合、通常のWebアプリケーションで使用すると、RedisはどのくらいのRAMを使用しますか?

答えて

23

RedisはディスクよりもRAMを多用します。おそらく、ダンプファイルのフォーマットはちょっと密集しています。これは、実際の生産システム(Ubuntuの10.04でのRedis 2.0.4を実行している64ビットのEC2インスタンス大)からいくつかの数字です:

$ redis-cli info | grep used_memory_human 
used_memory_human:1.36G 

$ du -sh /mnt/data/redis/dump.rdb 
950M /mnt/data/redis/dump.rdb 

あなたが見ることができるように、ダンプファイルは、メモリ使用量よりも数百メガバイト小さいです。

最終的には、データベースに保存する内容によって異なります。私は主に、わずか数(おそらく1%未満)のセットで、私のハッシュを持っています。どのキーにも非常に大きなオブジェクトが含まれておらず、平均オブジェクトサイズは889バイトです。

+0

私のマシンでいくつかのテストを行いましたが、これを確認できます。 Redisには、データベースのサイズ制限に対してアカウンティングに使用するRAMは含まれていないようです。 –

+0

4つのredisインスタンスの1つに3.4Gダンプファイルがありますが、redisはメモリ内で16.52Gを使用していると言います。 –

+1

2.4より古いRedisバージョンを使用していて、多くの削除を行っている場合、これが起こります。古いバージョンのRedisは、メモリをOSに戻すことはありませんでしたので、メモリ使用量は再起動するまで最高水準点に留まります。 – Theo

-3

Redisデータベースはメモリに保存されているため、80MBのデータベースはRAMで80MBを占有します。

Redisはプログラムを使用したメモリが非常に少ないため、この例のWebサイト「キーが0〜999999の自然数である100万個のキーと、値としての文字列「Hello World」が100MBを使用する[Ramの] "。 My Redisアプリは約300kb〜500kbのRAMを使用するので、80MBのデータベースに到達するには多くのデータが必要です。 Redisはデータベースのディスクスナップショットにも保存するので、RAMに80MB、ハードドライブに80MBが必要です。

+1

-1これはまったく正確ではありません。私は、RAMの11ギガバイトを占める4.1ギガバイトのデータを持っています。 – Alan

+1

-1平易な間違った答え... –

+0

"64ビットシステムでは、同じキーを格納するのに32ビットシステムよりもかなり多くのメモリを使用します。特に、キーと値が小さい場合、ポインタは64ビットシステムで8バイト必要です" –