Spring Data Redis
Serializers
| Serializer | 説明 | メリット | デメリット |
|---|---|---|---|
| GenericJackson2JsonRedisSerializer | シリアライズとデシリアライズに Jackson JSON ライブラリを使用 。 | - JSON 形式
をサポート、広
く使
われ柔軟
。 - カスタマイズオプションあり。 - 良好 なパフォーマンス。 | - Jackson ライブラリの依存
が必要
。 - JSON 専用 のため、他 のデータ形式 には不向 き。 |
| GenericToStringSerializer | toString() メソッドを使用
してオブジェクトを文字列
に変換
。 | - シンプルで使
いやすい。 - 追加 の依存 不要 。 | - 柔軟性
とカスタマイズ性
に制限
あり。 - バイナリシリアライザと比 べてパフォーマンスが低 い場合 あり。 |
| Jackson2JsonRedisSerializer | GenericJackson2JsonRedisSerializer と同様
、Jackson JSON ライブラリを使用
。 | - JSON 形式
をサポート、広
く使
われ柔軟
。 - カスタマイズオプションあり。 - 良好 なパフォーマンス。 | - Jackson ライブラリの依存
が必要
。 - JSON 専用 のため、他 のデータ形式 には不向 き。 |
| JdkSerializationRedisSerializer | Java の組 み込 みシリアライズ機構 を使用 するデフォルトのシリアライザ。 | - 使
いやすく、追加
の依存
不要
。 - 任意 のシリアライズ可能 な Java オブジェクトをサポート。 | - 他
のシリアライザと比
べてパフォーマンスが低
い。 - シリアライズされたデータは人間 が読 めず、クロスプラットフォーム互換性 がない。 |
| OxmSerializer | XML シリアライズとデシリアライズに JAXB (Java Architecture for XML Binding) を使用 。 | - XML 形式
と Java オブジェクトから XML へのマッピングをサポート。 - JAXB アノテーションでカスタマイズ可能 。 | - JAXB の依存
が必要
。 - XML 専用 のため、他 のデータ形式 には不向 き。 |
@class
- Spring Data Redis の
@classフィールドは、オブジェクトが Redis に保存 される際 に、シリアライズされたオブジェクトの完全修飾 クラス名 を格納 するために使用 されます。 このフィールドはdeserializationを補助 するために Spring Data Redis によってシリアライズされたオブジェクトに追加 されます。 - オブジェクトが Redis から取得
される際
、Spring Data Redis は
@classフィールドを使用 してオブジェクトの型 を判定 し、適切 にdeserializeします。これは Redis がすべてのデータを単純 なキーバリューペアとして保存 するため、オブジェクト取得時 に固有 の型 情報 が利用 できないためです。 - シリアライズされたデータに
@classフィールドを含 めることで、Spring Data Redis は各 オブジェクトに正 しいdeserializationロジックが使用 されることを保証 できます。これにより、オブジェクトの型 が時間 とともに変更 されても、Redis 内 の既存 データとの互換性 を維持 しながらアプリケーションのデータモデルを進化 させることが可能 になります。 @classフィールドは Spring Data Redis に固有 のものであり、Redis プロトコルやデータモデルの一部 ではないことに注意 してください。Redis を直接 使用 する場合 (Spring Data Redis なし)、シリアライズとdeserializationを自分 で処理 し、シリアライズされたデータに型 情報 を含 める方法 を見 つける必要 があります。