【问题标题】:How to clear EHCache?如何清除 EHCache?
【发布时间】:2015-12-08 04:26:41
【问题描述】:

我正在将 JavaLite ActiveJDBC 从 EHCache 2.x 升级到 v 3.x。 看起来 API 发生了巨大的变化,我可以在 v 3.x 中找到我需要的等价物,除了一个:如何清除所有缓存?例如,在 v2.x 中,我可以这样做:

net.sf.ehcache.CacheManager cacheManager = net.sf.ehcache.CacheManager.create();
//... code
cacheManager.removalAll();

如何在 EHCache 3 中执行此操作?

【问题讨论】:

    标签: ehcache activejdbc javalite


    【解决方案1】:

    澄清:CacheManager.removalAll() 是一种不仅可以清除缓存,而且可以完全删除缓存的方法。它在最新版本中已弃用,并替换为 CacheManager.removeAllCaches() 以更好地表明其用途。 如果您要保留对其中之一的引用,缓存将不再存在并且不能再使用。

    Ehcache 3 中的等价物是调用:CacheManager.close(),这将关闭所有缓存,然后释放 CacheManager 持有的所有资源。

    如果 Ehcache 3 满足了我所理解的目标(从缓存中清除数据)与使用的 Ehcache 2 方法(删除所有缓存)之间的脱节,很难得出结论。

    【讨论】:

    • 感谢您的回答。所以,在版本 3 中,我会:cacheManager.close(); 释放所有缓存。然后我应该放弃对这个对象的引用吗?另外,如果我需要重新创建它,我会创建一个新的 CacheManager 实例,对吗?
    • 不,在 3 中,生命周期是明确的并且处理得当。您可以简单地调用 CacheManager.init() 来重新启用它,它还会重新初始化其中配置的所有缓存。
    • 那么,CacheManager.init() 方法也会清除现有缓存?
    • 绝对不会,CacheManager.init() 将正确初始化缓存管理器,无论是在创建时还是在 CacheManager.close() 之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2022-08-20
    • 2018-04-11
    • 1970-01-01
    • 2015-07-08
    • 2020-03-11
    相关资源
    最近更新 更多