spring-data-jpa Sping Boot Redis Cache @CachePut没有更新该高速缓存

pu82cl6c  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(244)
@Cacheable(cacheNames = "BooksCache", key = "#id")
    public Book findById(long id) {
        LOGGER.info("Fetching Book From DB For BookId: {}", id);
        return bookRepository.findById(id).orElse(null);
    }

可缓存的工作正常,但当我们添加新图书或更新现有图书时,缓存不更新
下面是saveOrUpdate()的代码,我使用了@CachePut更新该高速缓存,但没有工作,数据库正在更新,但缓存没有更新

@Transactional
    @CachePut(cacheNames = "BooksCache", key = "#book.id")
    public Book saveOrUpdateBook(Book book) {
        return bookRepository.save(book);
    }

我已经尝试了@EnableTransactionManagement沿着@Transactional Annotation。我也尝试了spring Boot starter缓存而不是redis缓存,但是没有效果

t9eec4r0

t9eec4r01#

你必须从另一个类调用@Cachable-方法。否则该高速缓存代理将无法工作,缓存也不会改变/触发。

相关问题