12

以下のコードで作成された Guava キャッシュがある場合、最大キャッシュ サイズが設定されていない場合はありますか?

LoadingCache<String, String> loadingCache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() {
    @Override
    public String load(String key) throws Exception
    {
        return key.toUpperCase();
    }
});

私の場合、サイズに上限のないキャッシュが本当に必要です。ログインしているユーザーのアクセス許可を保存するためにキャッシュを使用しており、ユーザーのログアウト時またはセッションの有効期限が切れたときにアイテムをキャッシュから削除します。

4

2 に答える 2

26

デフォルトのキャッシュは無制限です: CacheBuilder の javadoc で説明されているように

これらの機能はすべてオプションです

デフォルトでは、CacheBuilder によって作成されたキャッシュ インスタンスは、どのタイプのエビクションも実行しません。

于 2012-07-13T08:16:40.353 に答える
3

CacheBuilder.maximumSize()平均的な「デフォルト」が呼び出されない場合、単純な答えは無制限です。

また、アプリケーションにサイズベースのエビクト戦略が必要だとは思いません。ユーザー セッションの有効期限が切れたら、キャッシュから削除します ( Cache.invalidate(key))。

また、文字列の大文字はキャッシュを必要としません。大文字を直接呼び出すことは、キャッシュよりもはるかに簡単で効果的です。

于 2012-07-13T08:42:31.283 に答える