我想使用 JAVA 代码清除缓存。
为此,我编写了以下代码:
public void clearCache(){
CacheManager.getInstance().clearAll();
}
这段代码正确吗?有没有办法确认它运作良好?谢谢
是的,您的代码会清除您在 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 element = new Element(key, value)
并简单地调用cache.put(element)
. 如果您的缓存变量不再可见,但您的 cacheManager 是,您可以执行相同的操作cacheManager.getCache(cacheName).put(element)
我希望这有帮助...
如果您知道缓存名称,则可以从CacheManager检索它并使用removeAll()。
CacheManager manager = CacheManager.getInstance();
Ehcache cache = manager.getCache(cacheName);
cache.removeAll();
您的方法有效,但它会清除所有缓存的对象。
有两种方法可以实现这一点: