При добавлении аннотации @Cacheable к методу, выполняющему простой код Java, при выполнении приложения срабатывает точка останова внутри метода. Означает ли это, что результат не был закэширован?
Используемая конфигурация:
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=[port]
spring.cache.redis.time-to-live=[some value]
Обратите внимание, что @Cacheable отлично работает в том же проекте, если он помещен перед методом базы данных.




Да, это означает, что результат не был закэширован.
In this case, if any of the caches contains the required result, the result is returned and the method is not invoked.
Чтобы использовать кеш, метод должен быть вызван снова с теми же параметрами. Однако, как указывает этот ответ, существуют ограничения.
Я смог заставить его работать, переместив весь код, связанный с кэшированным методом и его подметодами, в новый класс обслуживания, однако моя новая проблема заключается в том, что кеш всегда вызывается и никогда не обновляется. Как мне это исправить? другими словами, код методов никогда не вызывается. Конфигурация времени жизни кэша: spring.cache.redis.time-to-live=60000.
Не уверен, что произошло, но я решил проблему, выполнив эту команду в Redis для очистки кеша: redis-cli FLUSHALL
Чтобы заставить его работать, нам нужно вызвать метод с аннотацией @Cacheable из другого класса Java. В противном случае это не работает.
Вы ожидаете ответа без добавления кода/конфигурации? Пожалуйста, прочтите stackoverflow.com/help/как спросить, особенно часть МВЦЭ, и улучшите свой вопрос.