Spring / EhCache从缓存中删除特定键

时间:2014-09-24 11:22:38

标签: spring ehcache

@Cacheable(cacheName = "cacheOne")
public Map<String, Object> getSomeData(List<String> taglist,String queryString) {

我正在使用带有Spring的ehcache,如上面的代码所示。我可以通过执行以下操作清除 cacheOne 中的所有键:

cacheManager.getCache(&#34; cacheOne&#34)的removeAll();

但是,如果我只需要从此缓存中删除taglist包含特定标记的那些键,该怎么办?对于例如我想删除 cacheOne 中的所有条目,其中taglist包含标记 cricket

1 个答案:

答案 0 :(得分:0)

我担心你的问题会在你肩上。

除了您已经执行的缓存之外,您要求的是标记之间的映射(示例中为cricket)和包含这些标记的键。

为了存储此映射,您可能需要设计自己的KeyGenerator,以便在创建缓存密钥的同时跟踪此映射。 如果只有一部分标签与此清除需求有关,那么这种映射甚至可能是智能的。

默认情况下,Spring不会为您跟踪该信息,因此您将无法使用基于配置的方式。

另一个选项 - 不推荐 - 是通过迭代所有键来暴力破解。而且,一旦数据集增长,为什么这是一个坏主意应该很清楚。