这是我根据 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);
});
}
答案 0 :(得分:0)
尝试下面的代码:
@CacheEvict(value = "userCache", key="#userId")
public void updateUserCache()
{
....
...
}
或者您可以这样做
if (cache.isKeyInCache(userId))
{
cache.remove(key);
}