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)) 中删除。

而String大写不需要缓存,直接调用大写比缓存更简单有效。

于 2012-07-13T08:42:31.283 回答