Guava基于策略的缓存

Ami*_*ani 1 java caching guava

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

get(key)来自缓存的数据,该数据在存储操作 put(key,value)期间在存储操作期间被存储到缓存中

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

maa*_*nus 6

缓存不是计算缓存,所以我认为Guava CacheBuilder与a LoadingCache不合适.

所以使用CacheBuilder没有它.它的工作原理完全相同,只是你调用plain build()而不是if build(CacheLoader).一切都保持不变,除了你得到一个"普通"缓存而不是加载缓存.就这样.

我尝试使用MapMaker,但最大尺寸方法似乎过时了.

缓存通过MapMaper有一天会消失,忘掉它.


这个例子非常简单,只需创建

private final static Cache<String, String> cache =
    CacheBuilder.newBuilder().maximumSize(123).build();
Run Code Online (Sandbox Code Playgroud)

然后尝试这个:

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"));
Run Code Online (Sandbox Code Playgroud)