在Ehcache中缓存失效

时间:2011-04-29 09:44:12

标签: ehcache

我在Hibernate中使用Ehcache。

如何通知缓存数据库已更改?如何使缓存的数据无效?我如何以编程方式实现这一目标?

5 个答案:

答案 0 :(得分:10)

究竟是什么意思?有两种方法可以在数据库中进行更改:在app&在应用程序之外

在应用程序内部,您可以轻松触发失效。第二个是更难解决的问题。缓存元素与密钥一起存储,并且可以根据该密钥将其删除。

CacheManager manager = CacheManager.getInstance();
cache = manager.getCache(cacheName);
cache.remove(key);

or 

cache.removeAll();

根据您配置ehcache的方式当然。但是您需要知道保存对象的缓存的名称。

答案 1 :(得分:4)

这就是使所有EhCache项无效的方法,而不必担心单个缓存名称的含义:

CacheManager manager = CacheManager.getInstance();

String[] names = manager.getCacheNames();

for (String name : names)
{
    Cache cache = manager.getCache(name);

    cache.removeAll();
}

答案 2 :(得分:1)

尝试:

CacheManager.create().clearAll()

它将清除CacheManager中的所有缓存。

要仅清除一个特定缓存,请从缓存管理器中获取并删除所有元素:

CacheManager cacheManager = CacheManager.create();
Ehcache cache = cacheManager.getEhcache(cacheConfiguration.getName());
cache.removeAll();    

答案 3 :(得分:1)

设置缓存过期时间,以使数据刷新的频率大于数据库更改的频率。

您还可以仅在缓存中更新数据库中发生更改的元素。

答案 4 :(得分:0)

如果您要删除特定的缓存(例如:employeeCache)

@Autowired
CacheManager cacheManager;

您要使缓存无效的位置,请使用以下代码

    Cache cache = cacheManager.getCache("employeeCache");
    cache.removeAll();