spring cache的默认大小是多少? 如果另一个条目可以缓存会怎样?它会忽略它还是从缓存中删除一项以容纳一个新项?如果删除,那么如何确定要删除哪一个?
我们如何手动提供缓存大小? 我指的不是其他任何缓存,例如Caffeine,EHCache等。 我指的是默认的Spring缓存。
答案 0 :(得分:1)
Spring的缓存抽象不处理“管理”缓存内容(例如大小,逐出或到期策略)的特定语义和细节。因此,所有这些设置都必须在缓存提供程序级别(ehcache,hazelcast,infinispan ..)进行定义。
spring cache的默认实现是简单的ConcurrentHashMap
。
答案 1 :(得分:0)
We can add our own expiry and max limit as follows :
public CacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager() {
@Override
protected Cache createConcurrentMapCache(final String name) {
return new ConcurrentMapCache(name, CacheBuilder.newBuilder().expireAfterWrite(7200,
TimeUnit.SECONDS).maximumSize(500L).build().asMap(), false);
}
};