Spring cacheEvict基于类似搜索

时间:2017-02-24 19:26:06

标签: spring caching spring-cache

我使用Spring缓存实现缓存一些对象,下划线缓存是EhCache。我试图基于通配符搜索键来驱逐缓存,原因是我存储它们的方式,我只知道部分键。因此我想做类似下面的事情。我在这个论坛上搜索了相关的答案,但没有找到任何答案。

@CacheEvict(beforeInvocation=true, key="userId+%")
public User getUser(String userId)
{
  //some implementation
}

现在,如果我尝试这个,我会收到SPEL的错误。此外,我尝试为此创建一个自定义密钥生成器,如果密钥生成器返回一个密钥,这里驱逐工作,但我有几个密钥基于我的搜索。

@CacheEvict(beforeInvocation=true, keyGenerator="cacheKeyEvictor")
public User getUser(String userId)
{
  //some implementation
}

//Custom key generator for eviction
public class cacheKeyEvictor implements KeyGenerator {

  @Override
  public Object generate(Object arg0, Method arg1, Object... arg2) {

      //loop the cache and do a like search and return the keys
      return object; //works if I send one key. Won't work for a list of keys
  }
}

对此有任何帮助表示赞赏。

0 个答案:

没有答案