基于相似搜索的Spring缓存逐出

基于相似搜索的Spring缓存逐出,spring,caching,spring-cache,Spring,Caching,Spring Cache,我使用SpringCache实现缓存一些对象,下划线缓存是EhCache。我正试图基于对密钥的通配符搜索逐出缓存,原因是我存储它们的方式,我只知道部分密钥。因此我想做下面的事情。我在这个论坛上搜索了相关的答案,但没有找到任何答案 @CacheEvict(beforeInvocation=true, key="userId+%") public User getUser(String userId) { //some implementation } 现在,如果我尝试这个,我会得到一个SPE

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

@CacheEvict(beforeInvocation=true, key="userId+%")
public User getUser(String userId)
{
  //some implementation
}
现在,如果我尝试这个,我会得到一个SPEL错误。此外,我还尝试为此创建一个自定义的keygenerator,如果keygenerator返回一个键,那么这里的逐出操作会起作用,但根据我的搜索,我有两个键

@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
  }
}

非常感谢您的帮助。

有人能帮我解决这个问题吗?我正在尝试扩展KeyGenerator类并删除所需的缓存,这样我可以实现我想要的,但不确定这是否是正确的方法。您无法删除可配置密钥的列表。此功能不存在。是否有人可以帮助解决此问题?我正在尝试扩展KeyGenerator类并逐出所需的缓存,这样我将实现我想要的,但不确定这是否是正确的方法。您无法逐出可配置密钥的列表。此功能不存在。