JavaフレームワークRedis分散キャッシュ

JavaフレームワークRedis分散キャッシュ

[[269630]]

https://dzone.com/articles/java-distributed-caching-in-redis

Java 分散アプリケーションでキャッシュを使用する理由は何ですか?

アプリケーションの速度とパフォーマンスを向上させるには、1 ミリ秒も無駄にできません。 Google の調査によると、ウェブサイトが 3 秒以内に読み込まれない場合、モバイル ユーザーの 53% がウェブサイトを離れるそうです。

キャッシュは、分散アプリケーションを高速化するための重要なテクノロジの 1 つです。情報が CPU の近くに保存されるほど、アクセスが速くなります。 CPU キャッシュからデータをロードする方が RAM からロードするよりもはるかに高速であり、RAM からロードする方がハードディスクやネットワーク経由でロードするよりもはるかに高速です。

頻繁にアクセスされるデータを保存するには、分散アプリケーションで複数のマシンにわたってキャッシュを維持する必要があります。分散キャッシュは、分散アプリケーションのレイテンシを削減し、同時実行性とスケーラビリティを向上させるための重要な戦略です。

Redis は、データベース、キャッシュ、またはメッセージ ブローカーとして使用できる、人気のオープン ソースのインメモリ データ ストアです。 Redis はディスクではなくメモリからデータを読み込むため、多くの従来のデータベース ソリューションよりも高速です。

ただし、Redis 分散キャッシュを正しく動作させることは、開発者にとって大きな課題です。たとえば、ローカル キャッシュの無効化、つまりキャッシュ エントリの置き換えや削除は、慎重に処理する必要があります。ストレージ コンピューターのローカル キャッシュ内の情報を更新または削除するたびに、分散キャッシュ システム内のすべてのコンピューターのメモリ内のキャッシュを更新する必要があります。

幸いなことに、Redisson のような Redis フレームワークがあり、アプリケーションに必要な分散キャッシュの構築に役立ちます。次のセクションでは、Redisson の分散キャッシュの 3 つの重要な実装である Maps、Spring Cache、JCache について説明します。

1. Redisson分散キャッシュ

Redisson は、Java で Redis ラッパーとインターフェースを実装する Redis ベースのフレームワークです。 Redisson には、分散オブジェクト、分散サービス、分散ロックとシンクロナイザー、分散コレクションなど、多くの一般的な Java クラスが含まれています。以下で説明するように、これらのインターフェースの一部は分散キャッシュとローカル キャッシュの両方をサポートしています。

2. 地図

Map は Java で最も便利なコレクションの 1 つです。 Redisson は、ローカル キャッシュをサポートする RMap と呼ばれる Java マップ実装を提供します。

複数の読み取り操作またはネットワーク ラウンドトリップを実行することが予想される場合は、ローカル キャッシュをサポートする RMap を使用する必要があります。マップ データをローカルに保存すると、RMap はローカル キャッシュを有効にしていない場合よりも 45 倍高速になります。一般的な分散キャッシュは RMapCache を使用し、ローカル キャッシュは RLocalCachedMap を使用します。

Redis エンジン自体は、クライアント側でコードを実行する必要なく、キャッシュを実行できます。ただし、ローカル キャッシュは読み取り速度を大幅に向上させることができますが、開発者によるメンテナンスが必要であり、開発作業が必要になる場合があります。 Redisson は、ローカル キャッシュの実装を容易にする RLocalCachedMap オブジェクトを開発者に提供します。

次のコードは、RMapCache オブジェクトを初期化する方法を示しています。

  1. RMapCache<String, SomeObject> マップ = redisson.getMapCache( "anyMap" );
  2. map.put( "key1" 、新しいSomeObject()、10、TimeUnit.MINUTES、10、TimeUnit.SECONDS);

上記のコードは、文字列「key1」を RMapCache に格納し、それを SomeObject() に関連付けます。次に、2 つのパラメータを指定します。TTL は 10 分に設定され、最大アイドル時間は 10 秒に設定されます。

必要がなくなったら、RMapCache オブジェクトを破棄する必要があります。

  1. マップを破棄します。

Redisson を閉じた後に破棄する必要はありません。

3. スプリングキャッシュ

Spring は、キャッシュ サポートも提供するエンタープライズ レベルの Web アプリケーションを構築するための Java フレームワークです。

Redisson には Spring キャッシュ機能が含まれており、RedissonSpringCacheManager と RedissonSpringLocalCachedCacheManager という 2 つのオブジェクトが提供されます。 RedissonSpringLocalCachedCacheManager はローカル キャッシュをサポートします。

こちらは

RedissonSpringLocalCachedCacheManager オブジェクトの構成例:

  1. @構成
  2. @コンポーネントスキャン
  3. @キャッシュを有効にする
  4. 公共 静的クラスアプリケーション{
  5. @Bean(destroyMethod = "シャットダウン" )
  6. RedissonClient redisson() は IOException をスローします {
  7. 設定 config = new Config();
  8. config.useClusterServers()
  9. .addNodeAddress( "127.0.0.1:7004" , "127.0.0.1:7001" );
  10. Redissonを返します作成(設定);
  11. }
  12. @ビーン
  13. キャッシュマネージャーcacheManager(RedissonClient redissonClient) {
  14. Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();
  15. // 新しい「testMap」キャッシュを作成します: ttl=24 分、maxIdleTime=12 分
  16. config.put( "testMap" 、新しいCacheConfig(24*60*1000、12*60*1000));
  17. 新しい RedissonSpringCacheManager(redissonClient, config)を返します
  18. }
  19. }

さらに、JSON または YAML ファイルを読み取って RedissonSpringCacheManager を構成することもできます。

RMapsのように、

各 RedissonSpringCacheManager インスタンスには、ttl (time to live) と maxIdleTime という 2 つの重要なパラメーターがあります。これらのパラメータが 0 に設定されている場合、または定義されていない場合、データはキャッシュ内に無期限に残ります。

4. Jキャッシュ

JCache は、開発者がキャッシュからオブジェクトを一時的に保存、取得、更新、削除できるようにする Java キャッシュ API です。

Redisson は、Redis 用の JCache API の実装を提供します。以下は、デフォルト設定を使用して Redisson で JCache API を呼び出す例です。

  1. MutableConfiguration<String, String> config = new MutableConfiguration<>();
  2. CacheManager マネージャー = Caching.getCachingProvider().getCacheManager();
  3. Cache<String, String> cache = manager.createCache( "namedCache" , config);

さらに、JCache は、カスタム構成ファイル、Redisson Config オブジェクト、または Redisson RedissonClient オブジェクトを使用して構成できます。たとえば、次のコードではカスタム Redisson 構成を使用して JCache を呼び出します。

  1. MutableConfiguration<String, String> jcacheConfig = new MutableConfiguration<>();
  2. 設定 redissonCfg = ...
  3. 構成<String, String> config = RedissonConfiguration.fromConfig(redissonCfg, jcacheConfig);
  4. CacheManager マネージャー = Caching.getCachingProvider().getCacheManager();
  5. Cache<String, String> cache = manager.createCache( "namedCache" , config);

Redisson の JCache 実装は、JCache TCK のすべてのテストに合格しました。ご自身で確認することもできます。

<<:  IDC: パブリッククラウドサービスへの世界支出は2023年までに2倍以上に増加

>>:  10 仮想化プラットフォームの運用と保守に関する知識と経験

推薦する

evoxtはどうですか?米国ロサンゼルスデータセンターのVPSの簡単な評価

evoxtはどうですか? evoxt のカリフォルニア VPS はいかがでしょうか? evoxt は...

Miyun監視ウェブサイト虚偽宣伝監視ウェブサイト違法行為

これまで、密雲県の企業が運営する商業ウェブサイト1,993件が電子商取引規制「レーダーネットワーク」...

友好的なリンク交換に関する 9 つの文章、はっきり覚えていますか?

友好的なリンクの交換は、ウェブサイト運営のより重要な部分です。交換が適切に行われると、サイト自体の包...

2020年までに100万社の新しい企業がクラウドを導入する

工業情報化部は最近、「企業のクラウド移行促進に関する実施ガイドライン(2018~2020年)」に関す...

化粧品の電子商取引の急激な成長は、業界が自らを偽装するために必要な道となっている。

化粧品のEコマースの急成長文/天下網記者ヤン・チン規模で見ると、化粧品は婦人服、紳士服に次いでタオバ...

ブランドプロモーションの第一歩:マーケティングアイデアを刺激する5つの方法

ブランドプロモーションは、大企業や大手ブランドだけが使う高尚なコンセプトではありません。実際、企業が...

ライブストリーミングeコマースのキラー機能:商人が自らを放送する

現時点では、答えはすでに非常に明確です。ライブストリーミング電子商取引は電子商取引の主流の形態になっ...

ウェブサイト最適化のボトルネックを打破する方法を教えます

多くのウェブマスターは、ウェブサイトを一定期間運営した後に最適化のボトルネックに遭遇します。最適化の...

中国における「ボックス」月額サブスクリプションモデルの実践:低コストのプロモーションと中国式の改善

すべての共同購入ウェブサイトが米国のグルーポンからコピーされているように、化粧品サンプルを販売すると...

中央銀行は、4月1日から8つの第三者決済機関に注文の受付を停止するよう通知したと報じられている。

新浪科技報は3月21日、中央銀行の第79号文書がすべての第三者決済機関に発行されたと一部メディアが報...

ゲームプランナーの分析: Honor of Kings はなぜ中毒性が高いのか?

女子大生はなぜ毎晩眠れないのでしょうか?なぜ「小学生」があちこちに現れるのか?なぜいつも5人の大男が...

適切なアウトバウンドリンクはウェブサイトに大きな利益をもたらします

多くのウェブマスターが、他人が投稿した記事を収集する際に、元のソース アドレス リンクを保持していな...

簡単な分析: 将来的には2種類のオープン検索が共存するはず

オープン性と共有はインターネットの永遠のテーマであり、中国のインターネット発展の全体的な傾向です。オ...

外国貿易模倣ブランド VPS/著作権フリー VPS-hostsolutions、ルーマニア VPS、月額支払い 2 ユーロ

外国貿易ウェブサイトを運営している友人の中には、著作権紛争に遭遇する人もいるかもしれません。もちろん...