1

キャッシュ全体の最大サイズを設定できる単純なセッション キャッシュを作成しようとしています。CacheBuilderキャッシュはコンピューティングキャッシュではないので、Guava のaLoadingCacheは適切ではないと思います。次の操作を実行できるようにしたい:

get(key)stash 操作中に以前に stash されたキャッシュからのデータを stash 操作 put(key,value)中にキャッシュに格納する

MapMaker を使ってみましたが、最大サイズの方法は時代遅れのようです。私が持っているオプションを知っている人はいますか?単純なマップを使用して、独自のポリシーを展開するだけでいつでも頼ることができると思いますか?

4

1 に答える 1

6

CacheBuilderキャッシュはコンピューティングキャッシュではないので、Guava のaLoadingCacheは適切ではないと思います。

したがって、CacheBuilderそれなしで使用してください。build()if の代わりにplain を呼び出すことを除いて、まったく同じように機能しますbuild(CacheLoader)。読み込み中のキャッシュの代わりに「通常の」キャッシュを取得することを除いて、すべて同じままです。それで全部です。

MapMaker を使ってみましたが、最大サイズの方法は時代遅れのようです。

経由でのキャッシングMapMaperはいつかなくなります。忘れてください。


例は非常に簡単です。作成するだけです

private final static Cache<String, String> cache =
    CacheBuilder.newBuilder().maximumSize(123).build();

そして、これを試してください:

cache.put("a", "A");
cache.put("b", "B");
System.out.println(cache.getIfPresent("a"));
for (int i=0; i<1000; ++i) cache.put("n" + i, "x");
System.out.println(cache.getIfPresent("a"));
于 2012-08-10T22:22:46.357 に答える