1

我正在尝试创建一个简单的会话缓存,允许我在整个缓存上设置最大大小。缓存不是计算缓存,所以我认为CacheBuilder带有 a的 GuavaLoadingCache是不合适的。我希望能够执行以下操作:

get(key)缓存操作中先前在缓存操作期间缓存的数据在缓存操作 put(key,value)期间存储到缓存中

我尝试使用 MapMaker,但最大尺寸方法似乎已经过时了。有谁知道我有什么选择?我想我总是可以只使用一个简单的地图并滚动我自己的政策?

4

1 回答 1

6

缓存不是计算缓存,所以我认为CacheBuilder带有 a的 GuavaLoadingCache是不合适的。

所以使用CacheBuilder没有它。它的工作原理完全相同,只是你调用 plainbuild()代替 if 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 回答