2012-07-13 95 views
10

鉴于使用下面的代码创建的Guava缓存是否存在最大缓存大小(如果没有设置)?Google Guava Cache的默认最大大小是多少?

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

非常感谢这个链接,我刚刚发现了关于番石榴昨天和它的很多打开标签在我的浏览器尝试gork它。 – ams 2012-07-13 18:12:54

+0

他们是否删除了有关默认'maximumSize'值的部分?我无法在较新的javadoc中找到它的任何提及,例如http://google.github.io/guava/releases/23.6-jre/api/docs/com/google/common/cache/CacheBuilder.html – Henrik 2018-01-31 13:34:10

+0

@Henrik从来没有一个关于默认'maximumSize'值的部分:as由“这些功能全部是可选的”隐含,更明确地说“由CacheBuilder创建的默认缓存实例不会执行任何类型的驱逐”,因此没有默认值,因此不会驱逐。 – 2018-02-09 10:23:03

3

简单的答案是没有限制,如果你的意思是“默认”是CacheBuilder.maximumSize()永远不会被调用。

我不认为你的应用程序需要基于尺寸的驱逐战略。当用户会话过期时,将其从缓存中删除(Cache.invalidate(key))。

和字符串大写不需要缓存,直接调用大写比缓存更容易和有效。

相关问题