在java中使用cacheManager清除缓存

时间:2013-09-09 07:55:50

标签: java ehcache

我想使用JAVA代码清除缓存。

为了这个目标,我写了这段代码:

public void clearCache(){
        CacheManager.getInstance().clearAll();
    }

这段代码是否正确? 有没有办法确认它运作良好? 感谢

3 个答案:

答案 0 :(得分:5)

是的,您的代码会清除您在cacheManager中拥有的所有缓存。 ehcache文档说:void clearAll() Clears the contents of all caches in the CacheManager, but without removing any caches

如果要测试它,可以在缓存中添加一些元素,调用clearCache()然后尝试获取值。 get() - 方法只应返回null

您不能直接在cacheManager中添加值,它只管理您在配置文件中声明的缓存。 (默认情况下,它是ehcache.xml,你可以在ehcache主页上获得它。) 您还可以以编程方式添加缓存,即使不了解配置。

    CacheManager cacheManager = CacheManager.getInstance();
    Ehcache cache = new Cache(cacheManager.getConfiguration().getDefaultCacheConfiguration());
    cache.setName("cacheName");
    cacheManager.addCache(cache);

要向缓存添加值,您必须创建一个元素: Element element = new Element(key, value),只需致电cache.put(element)即可。 如果您的缓存变量不再可见,但您的缓存管理器是,您可以使用cacheManager.getCache(cacheName).put(element)

执行相同操作

我希望这会有所帮助......

答案 1 :(得分:4)

如果您知道缓存名称,则可以从CacheManager检索缓存名称并使用removeAll()

CacheManager manager = CacheManager.getInstance();
cache = manager.getCache(cacheName);
cache.removeAll();

您的方法有效,但它会清除所有缓存'对象。

答案 2 :(得分:0)

有两种方法可以实现这一目标:

  1. 使用dev-console:如果您使用的是与Terracotta Server Array(TSA)捆绑在一起的企业版ehcache,则可以在已安装的目录中找到dev-console.bat或dev-console.sh。操作系统的风格,只需运行此文件并连接到TSA服务器(如果使用安装的默认设置,则可以连接到localhost:9520)选择命名的缓存管理器,然后在概览选项卡中选择清除缓存按钮并选择要求清单在清单中清除。这将清除所选缓存的缓存内容,并可在调整选项卡中进行验证,其中显示可用的内存饼图。
  2. 使用开源ehCache:使用缓存管理器api按问题中的描述清除缓存,然后使用缓存中的get来验证特定键是否为空。
相关问题