2013-07-06 11 views
6

私は、何か他のものの中でいくつかのredisインスタンスを実行するボックスのmemに関心があります。したがって、私はRedis 32bitに移行することを考えています。これは私にかなりのRAMを節約するはずだからです。ポインタが小さいので32ビットのターゲットでコンパイルenter link description here4GBの制限を除き、Redis 32bit(64bitではなく)を使用しない理由は何ですか?

から

Redisのキーあたりはるかに少ないメモリ、 を使用するが、このような場合には、最大メモリ使用量4 GBの に限定されるであろう。 Redisを32ビットバイナリとしてコンパイルするには、012ビットの32ビットを とします。 RDBファイルとAOFファイルは、 インスタンス間(およびリトルビッグエンディアンとビッグエンディアン間)で互換性がありますので、 を32から64ビットに切り替えることができます。

言い換えれば、4GBは32ビットのredisインスタンスの最大値ですが、私はこれをヒットしないようにしています。私は、それぞれが4GBの制限を下回っている複数のredisインスタンスを使用しますが、これは問題ではないと思います(?)

パフォーマンスなど、他の理由がありますか?

答えて

5

複数の32ビットを使用すると、通常、Redisインスタンスはうまく動作します。あなたがが考慮する必要があるいくつかの欠点があります。

  • は、ほとんどの人は、64ビットバージョンを実行するため、32ビット版はあまりテストされ、展開されています。おそらく検出されないバグに遭う可能性が高くなるので、信頼性が低くなります。

  • 一部の操作は32ビットで効率が悪いです。たとえば、BITOP、BITCOUNT操作は、64ビットCPU上で実行するとより効率的でなければなりません。

  • メモリ制限を設定することは困難です。 maxmemoryパラメータの設定は、データのサイズ(内部通信バッファ、マスタ/スレーブ複写バッファ、I/Oバッファなど)以上のものも考慮する必要があるため、扱いにくいです。あまりにも楽観的すぎる場合(つまり、maxmemoryを4 GBに近づけすぎた場合)、Redisメモリが飽和したときにランダムクラッシュが発生します。

またサルヴァトーレはそれについて言っ読むことをお勧めします:

https://groups.google.com/forum/#!topic/redis-db/ThCVJdMrqCE

関連する問題