Вытеснение кеша по одному из нескольких ключейJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вытеснение кеша по одному из нескольких ключей

Сообщение Anonymous »

В моем приложении есть несколько кэшируемых методов с несколькими ключами:

Код: Выделить всё

@Cacheable(cacheNames = "valueCodes", key = "{#value, #fieldId, #projectId}")
@Cacheable(cacheNames = "fieldNames", key = "{#field, #value, #projectId}")
@Cacheable(cacheNames = "qi", key = "{#langCode, #question, #projectId}")
@Cacheable(cacheNames = "fieldCodes", key = "{#name, #projectId}")
Теперь мне нужен метод Cachevict, который очищает все кеши, в которых только ключ #projectId, который является UUID, соответствует:

Код: Выделить всё

@CacheEvict(value = {"valueCodes", "fieldCodes", "qi"; "fieldCodes"}, key = "#projectId")
В этой статье я прочитал, что это невозможно и что


Только ключевое регулярное выражение аннотации вытеснения соответствует более чем одному элементу
в каждом из имен кэша


Я не совсем уверен что они под этим подразумевают, но я думаю, это как-то связано с использованием регулярных выражений в SpEL.

Поэтому я начал думать об объединении моих ключей в один ключ:

Код: Выделить всё

@Cacheable(cacheNames="cahceName", key="concat(#projectId).concat(#otherKey)")
и используя регулярное выражение для сопоставления всех ключей с идентификатором проекта, за которым следует подстановочный знак. Но я не смог найти способ сделать это.

Возможно ли то, чего я пытаюсь достичь? Если да, то как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/409 ... tiple-keys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»