Java:如何从Ecache中删除?

时间:2018-12-03 11:22:25

标签: java spring java-8 ehcache hybris

这是我根据 GET 请求缓存数据的方式:

@Cacheable(value = "userCache", key = "T(de.hybris.platform.commercewebservicescommons.cache.CommerceCacheKeyGenerator).generateKey(true,true,'DTO',#currentPage,#pageSize,#sort,#fields)")
public UsersDTO getUsers(final int currentPage, final int pageSize, final String sort,
            final String fields)
{
        // Code......
}

如何才能从其他请求的缓存中仅删除“ DTO”,例如,当我触发要删除“ DTO”的DELETE请求时?我们可以通过注释吗?

现在我正在执行此操作,但我认为它正在删除整个userCache

public void updateUserCache()
    {
        final Cache cache = cacheManager.getCache("userCache");
        final Ehcache ehCache = (Ehcache) cache.getNativeCache();
        ehCache.getKeys().forEach(key -> {
            cache.evict(key);
        });
    }

1 个答案:

答案 0 :(得分:0)

尝试下面的代码:

@CacheEvict(value = "userCache", key="#userId")
public void updateUserCache()
    {
....
...
}

或者您可以这样做

   if (cache.isKeyInCache(userId))
    {
        cache.remove(key);
    }