6

私は、特にいくつかのredisインスタンスを実行するボックスのmemに関心があります。そのため、かなりの RAM を節約できるので、Redis 32 ビットに移行することを考えています。

ここにリンクの説明を入力してください

32 ビット ターゲットでコンパイルされた Redis は、ポインターが小さいため、キーごとに使用するメモリが大幅に少なくなりますが、そのようなインスタンスの最大メモリ使用量は 4 GB に制限されます。Redis を 32 ビット バイナリとしてコンパイルするには、make 32bit を使用します。RDB および AOF ファイルは、32 ビット インスタンスと 64 ビット インスタンスの間で (もちろんリトル エンディアンとビッグ エンディアンの間でも) 互換性があるため、32 ビットから 64 ビットに、またはその逆に問題なく切り替えることができます。

引用で述べたように、32ビットのredisインスタンスの最大値は4GBですが、これに当たらないようにしています。それぞれが 4GB の制限を下回る複数の redis インスタンスを使用していますが、これは問題ではないと思います (?)

おそらくパフォーマンスなど、他に注意すべき理由はありますか?

4

1 に答える 1

6

複数の 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

于 2013-07-07T08:11:47.650 に答える