java - Java:如何从 Ecache 中删除?
问题描述
这就是我在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”,例如当我触发 DELETE 请求时,我想删除“DTO”?我们可以通过注释来做到这一点吗?
现在我正在这样做,但我认为它正在删除整个 userCache
public void updateUserCache()
{
final Cache cache = cacheManager.getCache("userCache");
final Ehcache ehCache = (Ehcache) cache.getNativeCache();
ehCache.getKeys().forEach(key -> {
cache.evict(key);
});
}
解决方案
试试下面的代码:
@CacheEvict(value = "userCache", key="#userId")
public void updateUserCache()
{
....
...
}
或者你可以这样做
if (cache.isKeyInCache(userId))
{
cache.remove(key);
}
推荐阅读
- c# - AutoMapper 排除不需要的配置文件
- python - 如何使用聚合函数计算增长百分比?
- android - 请求后未加载广告
- php - Argon2id 如何在 PHP 中存储盐?
- dialogflow-es - 我的机器人如何在用户输入之前发起对话
- java - @GetMapping,二义映射
- c# - 如何将带有片段的 viewPager 放在另一个带有片段的 viewPager 中?
- python - 无法弄清楚某些输入中的字符串计数行为
- php - 为什么我不能使用 PHP artisan serve 运行我的 laravel 应用程序?
- r - 在 Windows 命令行中使用 UTF8 查询的 search_tweets 返回 0 输出