ホームページ  >  記事  >  Java  >  Guava キャッシュ使用実践ガイド

Guava キャッシュ使用実践ガイド

WBOY
WBOYオリジナル
2024-01-31 21:24:06689ブラウズ

Guava キャッシュ使用実践ガイド

Guava キャッシュの正しい使用方法

Guava キャッシュは、Java オブジェクトをキャッシュするための高性能ライブラリです。さまざまなキャッシュ戦略が提供されており、アプリケーションのパフォーマンスを向上させるために、ニーズに応じて適切な戦略を選択できます。

基本的な使用法

Guava キャッシュを使用するには、まずキャッシュ インスタンスを作成する必要があります。次のコードを使用して、LRU (最も最近使用されていない) ポリシーに基づいてキャッシュを作成できます。

Cache<Key, Value> cache = CacheBuilder.newBuilder()
    .maximumSize(1000)
    .build();

ここで、KeyValue は、キャッシュのデータ型です。それぞれキャッシュキーとキャッシュ値。 maximumSizeキャッシュの最大容量を指定します。キャッシュが最大容量に達すると、LRU ポリシーに従って、最も長期間使用されていないキャッシュ項目が削除されます。

次に、データをキャッシュに入れることができます。次のコードを使用して、キー key と値 value をキャッシュに入れることができます。

cache.put(key, value);

キャッシュからデータを取得するには、次のコードを使用できます。コード:

Value value = cache.getIfPresent(key);

キー key に対応する値がキャッシュに存在する場合はその値を返し、存在しない場合は null を返します。

キャッシュ戦略

Guava キャッシュはさまざまなキャッシュ戦略を提供しており、アプリケーションのパフォーマンスを向上させるためのニーズに応じて適切な戦略を選択できます。一般的に使用されるキャッシュ戦略は次のとおりです。

  • LRU (最も最近使用されていない) 戦略 : この戦略は、長期間使用されていないキャッシュ項目を削除します。
  • LFU (最近使用された) 戦略 : この戦略は、最も使用頻度の低いキャッシュ項目を削除します。
  • TTL (存続期間) 戦略 : この戦略では、生存期間が経過したキャッシュ アイテムが削除されます。
  • WeakKeys 戦略 : この戦略では、キャッシュ キーとして弱い参照を使用します。キャッシュ キーが参照されなくなると、キャッシュ アイテムは自動的に削除されます。
  • WeakValues 戦略 : この戦略では、キャッシュ値として弱い参照を使用します。キャッシュ値が参照されなくなると、キャッシュ項目は自動的に削除されます。

同時実行制御

Guava キャッシュはスレッドセーフであり、マルチスレッド環境で使用できます。ただし、キャッシュに対して同時更新を実行する場合は、同時実行制御メカニズムを使用してデータの正確性を保証する必要があります。

Guava キャッシュは 2 つの同時実行制御メカニズムを提供します:

  • ロック メカニズム: Cache.get(Key, Callable) メソッドを使用できます。キャッシュされた値を取得します。キー key に対応する値がキャッシュに存在しない場合、Callable オブジェクトが呼び出されて値が計算され、計算結果がキャッシュに格納されます。このアプローチにより、同時環境では 1 つのスレッドだけがキャッシュされた値を計算できるようになります。
  • アトミック更新メカニズム: Cache.asMap().putIfAbsent(Key, Value) メソッドを使用して、キャッシュ値をアトミックに更新できます。キー key に対応する値がキャッシュに存在しない場合は、値 value がキャッシュに配置されます。それ以外の場合は、操作は実行されません。このアプローチにより、同時環境では 1 つのスレッドだけがキャッシュされた値を更新できるようになります。

ベスト プラクティス

Guava キャッシュのパフォーマンスと信頼性を向上させるには、次のベスト プラクティスに従うことができます。適切なキャッシュ戦略を選択してください。アプリケーションの実際の状況に応じて、最適なキャッシュ戦略を選択すると、キャッシュ ヒット率が向上し、キャッシュ オーバーヘッドが削減されます。

    大きなオブジェクトのキャッシュは避けてください。大きなオブジェクトをキャッシュすると大量のメモリが消費され、アプリケーションのパフォーマンスが低下する可能性があります。
  • 同時実行制御メカニズムを使用します。マルチスレッド環境では、同時実行制御メカニズムを使用することで、データの正確性と一貫性を確保できます。
  • キャッシュを定期的にクリアします。キャッシュ内のデータは時間の経過とともに古くなったり、不要になったりする可能性があります。キャッシュを定期的にクリーンアップすると、メモリ領域が解放され、キャッシュのパフォーマンスが向上します。
  • コード例

次は、Guava キャッシュを使用したコード例です:

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

public class GuavaCacheExample {

    public static void main(String[] args) {
        // 创建一个基于LRU策略的缓存
        Cache<String, String> cache = CacheBuilder.newBuilder()
            .maximumSize(1000)
            .build();

        // 将数据放入缓存中
        cache.put("key1", "value1");
        cache.put("key2", "value2");

        // 从缓存中获取数据
        String value1 = cache.getIfPresent("key1");
        String value2 = cache.getIfPresent("key2");

        // 打印缓存中的数据
        System.out.println("value1: " + value1);
        System.out.println("value2: " + value2);
    }
}

出力結果:

value1: value1
value2: value2

以上がGuava キャッシュ使用実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。