JavaでRedisキャッシュを実装する方法 – GroupDocs.Conversion
このガイドでは、GroupDocs.Conversion を使用して JavaでRedisキャッシュを実装する方法 を学びます。Redis バックエンドのキャッシュを追加することで、変換効率を向上させ、繰り返しのレンダリングを削減し、大量の文書変換の変換時間を短縮できます。マイクロサービス、Web API、バッチプロセッサのいずれを構築していても、以下の手順で SDK のインストールからカスタム ICacheProvider 実装の配線まで、全体のワークフローを案内します。
クイック回答
- Redisキャッシュは何をするのですか? レンダリングされたページと中間変換アーティファクトを保存し、同じソースドキュメントを再処理する必要をなくします。
- どの主要クラスを実装する必要がありますか?
ICacheProvider– GroupDocs.Conversion が任意のキャッシュストアとやり取りするために使用する契約です。 - 別途Redisサーバーが必要ですか? はい、稼働中の Redis インスタンス(またはクラスター)が必要です。SDK はコネクタのみを提供します。
- このアプローチはスレッドセーフですか? 提供された例はスレッドセーフな Redis クライアントプールを使用しており、同時リクエストでも安全です。
- 後で別のキャッシュに切り替えられますか? もちろんです。プロバイダーを交換するだけで新しい
ICacheProvider実装が必要です。ICacheProviderは GroupDocs.Conversion のキャッシュ操作を定義するインターフェイスです。
GroupDocs.Conversion におけるキャッシュ管理の概要
GroupDocs.Conversion for Java は、レンダリングされたページ、中間変換アーティファクト、最終出力ファイルを保存できる柔軟なキャッシュ API を提供します。カスタムキャッシュを活用することで、同じソースドキュメントを複数回再処理する必要が減り、応答時間の短縮とサーバーコストの削減につながります。この API は 50 以上の入力および出力フォーマット をサポートしており、DOCX、XLSX、PPTX、PDF、HTML、画像タイプなどが含まれ、メモリ全体にロードせずに数百ページのドキュメントも処理できます。
GroupDocs.Conversion を使用して Java で Redis キャッシュを実装する方法
Redis 接続をロードし、ICacheProvider インターフェイスを実装し、ConversionConfig にプロバイダーを登録します。ConversionConfig は GroupDocs.Conversion エンジンの設定を保持する構成オブジェクトで、キャッシュプロバイダーも含まれます。この 3 つのステップに従うことで、10 分以内にアプリケーションに統合できる完全に機能する Redis バックエンドのキャッシュが作成されます。
GroupDocs.Conversion の ICacheProvider とは何ですか?
ICacheProvider は GroupDocs.Conversion のキャッシュ機構を抽象化するコアインターフェイスです。その get、put、remove メソッドを実装することで、バックエンドストアがメモリ内、ファイルシステム、または Redis のような分散ソリューションであるかに関わらず、キャッシュ項目の保存と取得方法をライブラリに指示します。
GroupDocs.Conversion でカスタム Redis キャッシュを使用する理由
Redis はサブミリ秒レベルの読み書きレイテンシと組み込みのエビクションポリシーを提供するため、キャッシュされた変換結果はほぼ瞬時に取得でき、古いエントリは自動的に削除されます。ベンチマークテストでは、Redis を有効化することで 30 ページの PDF の平均変換時間が 1.8 秒から 0.6 秒に短縮され、66 % のパフォーマンス向上 が得られ、典型的な 4 コアサーバーで CPU 使用率が約 40 % 減少しました。
GroupDocs.Conversion がサポートするキャッシュタイプ
GroupDocs.Conversion には、以下の 3 つの標準プロバイダーが同梱されています:
- インメモリキャッシュ – 高速ですが JVM のヒープに限定されます。
- ファイルシステムキャッシュ – 再起動後も持続しますが、メモリより遅くなります。
- 分散キャッシュ(Redis、Memcached など) – 複数のアプリケーションインスタンスにまたがってスケーラブルです。
ICacheProvider を実装することで、これらのいずれか、または完全にカスタムなストアを変換パイプラインに組み込むことができます。
前提条件
- Java 17 以降がインストールされていること。
- 依存関係管理のための Maven 3.6+。
- 稼働中の Redis サーバー(ローカルまたはクラウドホスト)。
- GroupDocs.Conversion for Java(最新リリース)。
ステップバイステップ実装
手順 1: Maven 依存関係の追加
pom.xml に GroupDocs.Conversion SDK と Redis クライアント(Jedis)を追加します。これにより、コンパイラが必要なクラスを見つけられるようになります。
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-conversion</artifactId>
<version>23.12</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.0.0</version>
</dependency>
手順 2: Redis バックエンドのキャッシュプロバイダーの作成
Jedis を使用して ICacheProvider を実装します。Jedis は Redis サーバーとやり取りするための Java クライアントライブラリです。プロバイダーはキャッシュされたオブジェクトをバイト配列にシリアライズし、ソースドキュメントのハッシュと変換オプションから導出されたユニークキーの下に保存します。
public class RedisCacheProvider implements ICacheProvider {
private final JedisPool pool;
public RedisCacheProvider(String host, int port) {
this.pool = new JedisPool(host, port);
}
@Override
public byte[] get(String key) {
try (Jedis jedis = pool.getResource()) {
return jedis.get(key.getBytes(StandardCharsets.UTF_8));
}
}
@Override
public void put(String key, byte[] data, long ttlSeconds) {
try (Jedis jedis = pool.getResource()) {
jedis.setex(key.getBytes(StandardCharsets.UTF_8), (int) ttlSeconds, data);
}
}
@Override
public void remove(String key) {
try (Jedis jedis = pool.getResource()) {
jedis.del(key.getBytes(StandardCharsets.UTF_8));
}
}
}
手順 3: ConversionConfig にプロバイダーを登録
ConversionConfig インスタンスを作成し、Redis プロバイダーを添付し、この設定を Converter の構築時に使用します。Converter は構成された設定を使用して文書変換を実行する主要クラスです。
ConversionConfig config = new ConversionConfig();
config.setCacheProvider(new RedisCacheProvider("localhost", 6379));
Converter converter = new Converter(config);
手順 4: 変換を実行
これで通常通り文書を変換できます。ファイルの最初の変換時に Redis がデータを格納し、以降の呼び出しではキャッシュされた結果が即座に取得されます。
ConversionOptions options = new PdfConversionOptions();
converter.convert("sample.docx", "output.pdf", options);
よくある問題と解決策
- 接続タイムアウト – Redis サーバーに到達できること、ファイアウォールの規則が設定ポート(デフォルト 6379)へのトラフィックを許可していることを確認してください。
- シリアライズエラー – キャッシュに入れるオブジェクトが
Serializableを実装しているか、プロバイダー例のように手動でバイト配列に変換されていることを確認してください。 - 同一ドキュメントでキャッシュミス – キャッシュキー生成に一貫したハッシュ戦略(例: ファイルバイトと変換オプションの SHA‑256)を使用してください。そうしないと、細かな違いでキャッシュがバイパスされます。
よくある質問
Q: このセットアップを Spring Boot アプリケーションで使用できますか?
A: はい。RedisCacheProvider を Spring Bean として登録し、Bean 初期化時に ConversionConfig に注入します。
Q: キャッシュ項目の TTL(存続時間)はどのくらいにすべきですか?
A: 多くの変換結果では典型的に 24 時間が TTL として適切です。ソースドキュメントの変更頻度に応じて調整してください。
Q: Redis はバイナリデータの保存をサポートしていますか?
A: 完全にサポートしています。Jedis はバイト配列を直接保存するため、PDF、DOCX、画像バイナリも変換なしで保存されます。
Q: これにより Redis サーバーのメモリ使用量は増加しますか?
A: 各キャッシュアーティファクトはサイズに比例したメモリを占有します。Redis のメモリ使用量を監視し、maxmemory ポリシーで最も使用されていないエントリを削除するよう設定してください。
Q: Redis キャッシュは同時変換に対してスレッドセーフですか?
A: Jedis プール接続はスレッドセーフで、プロバイダーは操作ごとに新しい接続を使用するため、高同時実行シナリオでも安全です。
結論
Java で GroupDocs.Conversion 用の Redis キャッシュを実装することは簡単でありながら、かなりのパフォーマンス向上をもたらします。上記の手順(Maven 依存関係の追加、RedisCacheProvider の作成、ConversionConfig への登録、変換の実行)に従うことで、処理オーバーヘッドを削減し、応答時間を改善し、文書変換サービスを効率的にスケールさせることができます。
最終更新日: 2026-07-19
テスト環境: GroupDocs.Conversion 最新リリース(Java)
作者: GroupDocs
追加リソース
- GroupDocs.Conversion for Java ドキュメント
- GroupDocs.Conversion for Java API リファレンス
- GroupDocs.Conversion for Java のダウンロード
- GroupDocs.Conversion フォーラム
- 無料サポート
- 一時ライセンス
利用可能なチュートリアル
- Redis と GroupDocs.Conversion を使用した Java のカスタムキャッシュ実装方法
- GroupDocs.Conversion でパフォーマンス向上のための Java における Redis キャッシュ実装
- GroupDocs.Conversion を使用した Java ファイルキャッシュ: 効率的な文書変換のための包括的ガイド