Spring Cache/JSR107: аргумент списка/коллекции как часть ключаJAVA

Программисты JAVA общаются здесь
Anonymous
Spring Cache/JSR107: аргумент списка/коллекции как часть ключа

Сообщение Anonymous »

У меня есть сервис, которая вызывает внешнюю систему для извлечения некоторых объектов по внешнему идентификатору, а также отправляю их обратно в обновление. Вместо того, чтобы извлекать объекты один за другим. Существуют более общие методы цели: < /p>

public interface ExternalSystem {
List getObjects(List externalIds);

void updateObjects(List updates);
}
< /code>

Я хотел бы поставить кэш на вершину вызовов Evenerwestystem, потому что они довольно дорогие.@Cacheable("cache-external")
List getObjects(List externalIds) {}

@CacheEvict(cacheNames="cache-external", allEntries=true)
void updateObjects(List updates);
< /code>

Тем не менее, такой кэш будет вести себя очень плохо, если у меня будет много пересечения между Exmervidiods, то есть < /p>
  • Call#1 getObjects ([1,2,3,4]) -> Cache, установленное по [1,2,3,4,4]. getObjects ([1,2,3,4,5]) -> Кэш, поставленное [1,2,3,4,5] ключ < /li>
    Вызовы#3 getObjects ([6,7,8,9]) -> Кэш, поставленные [6,7,8,9] Ключ < /li>

    < /ol>

    Итак, вопрос заключается в том, как реализовать пользовательскую стратегию (я предполагаю, что это не выполнимо из коробки), которые выселяют только те записи, которые действительно должны быть выселены и сделают ключи таким образом, что пересекающиеся объекты получают из кеша? questions:


    spring-cache-abstraction-with-multi-value-queries
  • using-spring-cache-on-methods-that-take-an-array-or-collection
  • spring-cacheable-methods-with-lists
upd2.
Вот что-то похожее на то, что я хочу, за исключением случаев, когда я помещаю в пары кэша строки и exteraldto для каждого элемента в коллекции.
Уровень элемента-cachging-of-list-list < /p>

Подробнее здесь: https://stackoverflow.com/questions/373 ... of-the-key

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