@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 ?
答案 0 :(得分:0)
我担心你的问题会在你肩上。
除了您已经执行的缓存之外,您要求的是标记之间的映射(示例中为cricket)和包含这些标记的键。
为了存储此映射,您可能需要设计自己的KeyGenerator
,以便在创建缓存密钥的同时跟踪此映射。
如果只有一部分标签与此清除需求有关,那么这种映射甚至可能是智能的。
默认情况下,Spring不会为您跟踪该信息,因此您将无法使用基于配置的方式。
另一个选项 - 不推荐 - 是通过迭代所有键来暴力破解。而且,一旦数据集增长,为什么这是一个坏主意应该很清楚。