ホームページ >Java >&#&チュートリアル >Guava を使用して Java で時間ベースの有効期限付きキャッシュを作成する方法

Guava を使用して Java で時間ベースの有効期限付きキャッシュを作成する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 07:02:16423ブラウズ

How to Create a Time-Based Expiring Cache in Java using Guava?

期限切れキーを含む Java 時間ベースのマップ/キャッシュ

Java では、時間ベースのキャッシュの処理が課題となる場合があります。キーは一定の期間が経過すると期限切れになる場合があり、これらの期限切れのエントリを自動的に削除することが必要になる場合があります。

この問題に対する 1 つの解決策は、現在 Guava として知られる Google コレクションの機能を活用することです。 Guava の MapMaker クラスは、期限切れのキーを使用してマップを作成するための便利なメカニズムを提供します。

ConcurrentMap<Key, Graph> graphs = new MapMaker()
   .concurrencyLevel(4)
   .softKeys()
   .weakValues()
   .maximumSize(10000)
   .expiration(10, TimeUnit.MINUTES)
   .makeComputingMap(
       new Function<Key, Graph>() {
         public Graph apply(Key key) {
           return createExpensiveGraph(key);
         }
       });

MapMaker では、さまざまなパラメータを指定できます。

  • concurrencyLevel: マップ内の並列処理を制御します。
  • softKeys: ガベージ コレクターが再利用できるように、キーを弱く保持する必要があることを示します。
  • weakValues: ソフトキーに似ていますが、値が対象です。
  • maximumSize: マップ内のエントリの最大数を指定します。
  • expiration: 有効期限を設定します。

その後、Guava はこれらの MapMaker メソッドの一部を非推奨にし、代わりにCacheBuilder:

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
    .maximumSize(10000)
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .build(
        new CacheLoader<Key, Graph>() {
          public Graph load(Key key) throws AnyException {
            return createExpensiveGraph(key);
          }
        });

CacheBuilder は、Java で時間ベースのキャッシュを管理するための、より簡潔で更新された API を提供します。

以上がGuava を使用して Java で時間ベースの有効期限付きキャッシュを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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