1

memcached オブジェクトが大きくなりすぎないように物理的/実際のサイズを測定する方法についていくつかの助けを得た後、私は次のステップについて考えました - ストレージ時に大きなオブジェクトを小さな断片に透過的に分割し、それらを接着するシャーディング/分割機能を実装しますそれらを要求するとき、1 つの大きなオブジェクトとして一緒に。基本的に、memcached を満足に保つために実行する必要があるすべてのことを、舞台裏で自動的に実行する必要があります。

配列、オブジェクト、またはあらゆる種類のオブジェクトの分割を処理する適切な方法は何ですか?

私は自分の webapp で PHP を使用していますが、この場合、正しい方向に向けるためのいくつかの疑似コードを使用した一般的なアプローチに非常に満足しています。

どうもありがとう!

4

1 に答える 1

2

他の質問でserializeは、オブジェクトの格納された長さを測定するために使用されます。オブジェクト サイズのデフォルトの 1 MB 制限に達していて、分割する必要がある場合は、単純に を使用して、結果の文字列を適切なチャンクserializeに分割し、チャンクを保存します。後でそれらを再び一緒に戻すと、結果が得られます。joinunserialize

そうは言っても...真剣に、シリアル化されたオブジェクトのサイズがメガの場合、物事の保存方法を再考する必要があるかもしれません。PHP のシリアライズは少し遅くなる可能性があり (たとえば、 と比較してjson_encode)、メガバイトまたはそれ以上のデータをスローすることは、何をしていても最善または最速の方法ではない可能性があります。

パフォーマンス メカニズムとして memcached とシャーディングを実装している場合は、 Xdebugなどのツールを使用してコードのプロファイルを作成し、他のすべてのボトルネックを排除していない限り、今すぐ停止することをお勧めします。

于 2010-06-18T20:28:22.743 に答える