我正在尝试创建一个简单的会话缓存,允许我在整个缓存上设置最大大小。缓存不是计算缓存,所以我认为CacheBuilder
带有 a的 GuavaLoadingCache
是不合适的。我希望能够执行以下操作:
get(key)
缓存操作中先前在缓存操作期间缓存的数据在缓存操作
put(key,value)
期间存储到缓存中
我尝试使用 MapMaker,但最大尺寸方法似乎已经过时了。有谁知道我有什么选择?我想我总是可以只使用一个简单的地图并滚动我自己的政策?
缓存不是计算缓存,所以我认为
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"));