gpt4 book ai didi

java - 我们总是需要使用 CacheManager 吗?

转载 作者:行者123 更新时间:2023-11-30 08:43:25 24 4
gpt4 key购买 nike

我注意到根据文档,要创建缓存,您必须实例化或获取 CacheManager 并将缓存添加到其中。

singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
singletonManager.addCache(memoryOnlyCache);
Cache test = singletonManager.getCache("testCache");

但是,下面的代码似乎可以工作

public class MyCache {

private static Cache cache = null;

...

private MyCache() {
cache = new Cache(cacheName, 200, MemoryStoreEvictionPolicy.LFU, false, null, false, timeToLiveSeconds, 0L, false, 0, null);
cache.initialise();
}
}

所以我的问题是:

1/为什么这行得通?我确认我可以添加或删除条目,并且缓存已过期。

2/如果这可行,但不是实现它的正确方法,为什么初始化是公开的?。它可以具有默认访问权限。

最佳答案

Ehcache 2.x 需要一个 CacheManager 来提供缓存。这是使用缓存的记录和推荐方式。未链接到 CacheManagerCache 可能会导致各种问题,尤其是对于更高级的功能。

CacheManager 负责的一些功能:

  • 缓存的存储库
  • 缓存 初始化
    • 包括缓存及其配置假定已正确设置的一些双向链接
  • 用于堆上字节大小调整的 SizeOf 引擎提供程序
  • 事务管理器提供者
  • 统计执行者提供者
  • ARC 池提供商

能够构造和初始化Cache 的原因在于历史原因(API,Cache 是类而不是接口(interface))以及向后保留的意愿兼容性。

Ehcache 3.x 将采用用户管理 缓存的概念,即未链接到 CacheManager 的缓存。它们非常适合您只需要 put/get/evict/expiry 功能的用例。

关于java - 我们总是需要使用 CacheManager 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com