2012-07-13 23 views
10

以下のコードで作成されたGuavaキャッシュがある場合、最大キャッシュサイズが設定されていればそれがありますか?Google Guavaキャッシュのデフォルトの最大サイズはどれくらいですか?

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

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

答えて

22

デフォルトのキャッシュは無制限です:javadoc for CacheBuilder

を説明するように、これらの機能はすべてオプションで任意の型を実行することはありませんCacheBuilderによって作成されたデフォルトのキャッシュ・インスタンスによって

追放の

+0

昨日、Guavaについて気づいたばかりで、ブラウザで開いているタブの数が多いので、それを見つけようとしていました。 – ams

+0

デフォルトのmaximumSize値に関するセクションを削除しましたか?私は新しいjavadocsでそれの言及を見つけることができません。 http://google.github.io/guava/releases/23.6-jre/api/docs/com/google/common/cache/CacheBuilder.html – Henrik

+0

@Henrikデフォルトの「maximumSize」値に関するセクションはありませんでした。 「これらの機能はすべてオプションです」と明示されています。「デフォルトでは、CacheBuilderによって作成されたデフォルトのキャッシュインスタンスはすべてのタイプのエビクションを実行しません」というデフォルトの値はありません。 –

3

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

あなたのアプリケーションがサイズベースの退去戦略を必要としないと思います。ユーザーセッションの有効期限が切れたら、キャッシュから削除してください(Cache.invalidate(key))。

そして大文字の大文字はキャッシュを必要とせず、大文字を直接呼び出すことはキャッシュよりも簡単で効果的です。

関連する問題