Я хочу использовать абстракцию Cache Spring, чтобы комментировать методы как @Cacheable. Однако некоторые методы предназначены для принятия массива или набора параметров и возврата коллекции. Например, рассмотрим этот метод, чтобы найти entites:Какие существуют стратегии использования Spring Cache для методов, которые принимают параметр array или collection?
public Collection<Entity> getEntities(Collection<Long> ids)
семантически, мне нужно кэшировать Entity
объекты по отдельности (в привязке по идентификатору), а не на основе сбора идентификаторов в целом. Подобно тому, о чем спрашивает this question.
Simple Spring Memcached поддерживает то, что я хочу, через его ReadThroughMultiCache
, но я хочу использовать абстракцию Spring для того, чтобы поддержать легкое изменение реализации хранилища кэша (гуава, Согласованность, Hazelcast и т.д.), а не только Memcached.
Какие существуют стратегии кэширования такого метода с использованием Spring Cache?
Следует также отметить, что если вы заранее знаете, что вы не планируете переключать поставщиков кэширования, вы можете просто реализовать операцию «Cache» с точки зрения поставщика. Например, если Memcached обрабатывает это с помощью ReadThroughMultiCache, тогда вы можете просто реализовать операции Cache.get (key) (и, возможно, put?) Для ReadThroughMultiCache. Мое решение, однако, пыталось (в основном) кэшировать провайдера агностиком за ваше описание. –
Джон, я ценю усилия и идеи, но ограничение №1 для меня - это разбойник. Нам нужно кэшировать разумно, чтобы элементы в списке ключей НЕ были «все или ничего». Нам нужно использовать кешированные элементы из списка, когда они присутствуют. –
Правильно, к сожалению, с моей головы, я не могу придумать лучшего способа сделать это более умным, чем привязать себя (в определенной степени) к вашему базовому поставщику кеширования. Во всяком случае, структура гибкая, поскольку она дает вам возможность расширения, чтобы настроить поведение. Однако, из-за-коробки, это будет очень сложно поддерживать, особенно последовательно через поставщиков кеширования. Открыта для предложений или других идей по таким вопросам. –