web-dev-qa-db-ja.com

ロード機能なしでグアバキャッシュを使用する

私のJavaアプリにはキャッシュがあります。現在のキャッシュ実装を交換して、グアバキャッシュに置き換えたいと思います。

残念ながら、私のアプリのキャッシュ使用量は、グアバのキャッシュが機能しているように見える方法と一致していないようです。空のキャッシュを作成し、「get」メソッドを使用してキャッシュからアイテムを読み取り、「put」メソッドを使用してアイテムをキャッシュに格納できるようにするだけです。 「get」呼び出しでアイテムをキャッシュに追加しようとしないでください。

LoadingCacheクラスには、必要なgetメソッドとputメソッドがあるようです。しかし、「ロード」機能を提供せずにキャッシュを作成する方法を理解するのに苦労しています。

私の最初の試みはこれでした:

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build();

しかし、それはこのコンパイラエラーを引き起こします:互換性のないタイプ。キャッシュがLoadingCacheに準拠するように、タイプ変数K1、V1のインスタンスが存在しません

どうやら私は「load」メソッドを持つCacheLoaderを渡す必要があります。

(例外をスローするだけの「load」メソッドを持つCacheLoaderを作成できると思いますが、それは奇妙で非効率的なようです。それは正しいことですか?)

29
Mike W

CacheBuilder.build() 非ロードキャッシュを返します。ちょうどあなたが望むもの。使用するだけ

Cache<String, String> cache = CacheBuilder.newBuilder().build();
35
JB Nizet