4

このスクリーン ショットに基づく: http://www.dropmocks.com/mBvx1 (リンク切れ)

redis は実際に必要だと思うメモリの 2 倍必要ですか? ディスクに保存する別のプロセスが生成されると思いますが、それは実際にメモリをコピーすることを意味しますか?

4

3 に答える 3

9

Redis は、データによっては最大 8GB まで簡単に使用できます。そうは言っても、あなたが話している「ダブルメモリ」は赤いニシンです。フォークしてメモリを「コピー」しますが、コピーオンライトテクノロジーにより、メモリはプロセス間で共有され、2つのうちの1つが書き込まれた場合にのみ書き込まれますプロセスは、メモリの特定のバイトに変更を加えます。

したがって、ディスクへの保存中に、保存中に変更されたキーのみが、2 つのプロセス間で追加のメモリ割り当てを引き起こします。それ以外はすべて共有されます。お役に立てれば。

于 2010-12-03T04:22:05.200 に答える
-1

redisに8GBのメモリがある場合、これ以上は使用されません。ただし、保存中に、fork()は新しいredisを「処理」し、すべてのデータをコピーします(たとえば、8 GB以上)。これをメモリに収めることができないため、スワップファイル(ディスクなど)でスワップします。保存が完了すると、メモリは解放されます。

私のサーバーでこれに気づきました。多くのsphinxプロセスが実行されており、2つのredisサーバーが4GBと保存の両方で同じ時間に発生しました。

http://redis4you.com/articles.php?id=006&name=Redis+swap+issue+while+save

于 2011-08-21T09:00:42.780 に答える
-2

Redis が最大 8GB を占めるべきだとは思いません。メモリ リークが発生している可能性があるため、2.X にアップグレードすることをお勧めします。

しかし、あなたの質問に戻ると、Redis はディスクに保存する新しいプロセスを作成すると思いますが、Redis はメモリに保存されます。電源障害が発生して RAM 内のすべてのデータが失われた場合に備えて、ディスクに保存します。

于 2010-10-26T14:04:09.530 に答える