Java: Как удалить из Ecache? - PullRequest
       22

Java: Как удалить из Ecache?

0 голосов
/ 03 декабря 2018

Вот как я кеширую данные для 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);
        });
    }

1 Ответ

0 голосов
/ 03 декабря 2018

Попробуйте, как показано ниже:

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

или вы можете сделать это

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