7

私は以下のようなクラスを持っています:

   公開クラス
      {
         パブリック文字列名;
         public 文字列の年齢。
      }

Perons のマップを Redis に保存する方法について、私は少し混乱しています。

Javaのシリアル化/逆シリアル化されたオブジェクトアプローチを採用する必要がありますか、それともJSONに変換してから保存し、その逆を試みる必要があります。

以下の点についての考え:

  • シリアライゼーションとデシリアライゼーションのコスト VS Java と JSON へのマッピングのコスト
  • JSON および Redis のシリアル化されたオブジェクトのメモリ要件
  • 圧縮 : ストリームとデータ

    Redish Hashを使用しているため、データ圧縮は少し難しいように見えますが(あまり有益ではありません)、どの圧縮を使用する必要がありますか

仮定のいくつかは次のとおりです。

  • pojo には多くのインスタンス変数が含まれています
  • オブジェクトを保存するためにRedisハッシュを使用します
4

2 に答える 2

2

答えは、ユースケースと環境に合わせて測定する必要があるということです。私は最初に JSON を試してみます。JSON の方が汎用性が高く、問題が少ないためです。つまり、壊れたデータのデバッグと復元が簡単です。

パフォーマンス。 JSON シリアル化は高速であるため、多くのシナリオでボトルネックにはなりません。ほとんどの場合、ディスクまたはネットワーク IO: Java シリアル化のベンチマークです。デフォルトの Java シリアライゼーションは遅いので使用しないでください。Kryoは、バイナリ出力のオプションです。バイナリ フォーマット用に無数のプラットフォームが必要な場合は、DB の内部フォーマットまたは Google Protobuffers を検討してください。

圧縮。Google では、CPU の負荷が少ない圧縮にSnappyを使用しています。Snappy は、Cassandra、Hadoop、Hypertable でも使用されています。JVM コンプレッサーのベンチマーク:カルガリー コーパス データ セットを使用した圧縮テスト

于 2013-11-09T06:55:12.710 に答える