У меня есть требование, при котором запрос к API продукта будет иметь несколько идентификаторов продуктов, и этот набор идентификаторов в запросе может быть разным для каждого запроса.
Учитывая сценарий, если мне нужно кэшировать данные о продукте с идентификатором продукта в качестве ключа, возможно ли это с помощью Spring Cache?
Бывший:
Request1 - prod1, prod2, prod3, .... Кеш создан - {prod1 = D1, prod2 = G1, prod3 = B3}
Request2 - prod4, prod5, prod2, ....
prod2 - значение, полученное из кеша и Кэш обновлен новым набором данных для prod4 и prod5
Обратите внимание, что мы не можем позволить себе делать единичные вызовы API для обслуживания продукта. Один из подходов - не использовать весенний кеш, а вместо этого построить карту информации, как показано ниже.
Карта <String, String> productCategoryMap;
getProductCategories (Список продуктов) {
// возвращаем данные из кеша и / или загруженного кеша, если данные не найдены в productCategoryMap
}
loadProductCategories (Список продуктов);
Прокомментируйте, пожалуйста, свои мысли по поводу постановки проблемы и возможных способов ее реализации.
Спасибо.





Кэширование Guava подходит как лучшее решение для этого варианта использования. Я использовал loadAll (..) для списка идентификаторов продуктов.
Проблема здесь в том, что getAll (..) не работает / выдает исключение, когда данные не найдены для данного идентификатора продукта, это можно обработать, перехватывая исключение и затем вызывая getAllPresent (..)