坚持最高

通过引用开始使用Spring Data JPA学习Spring Data JPA课程:

1188金宝搏亚洲

1.介绍

在这篇简短的教程中,我们将了解如何进行配置复述,作为Spring Boot缓存的数据存储。

2.依赖关系

首先,让我们添加spring-boot-starter-cachespring-boot-starter-data-redis构件:

<依赖> < groupId > org.springframework。 2.4.3    2.4.3 

这些添加了缓存支持,并引入了所有必需的依赖项。

3.配置

通过添加上面的依赖项和@EnableCaching注解,Spring Boot将自动配置一个RedisCacheManager使用默认的缓存配置。但是,在缓存管理器初始化之前,我们可以用几种有用的方法修改此配置。

首先,让我们创建RedisCacheConfiguration豆:

@Bean公共RedisCacheConfiguration cacheConfiguration(){返回RedisCacheConfiguration () .entryTtl(Duration.ofMinutes(60)) .disableCachingNullValues() .serializeValuesWith(SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));}

这给了我们对默认配置有更多的控制-例如,我们可以设置所需的生存时间(TTL)值,并为动态缓存创建定制默认序列化策略。

接下来,为了完全控制缓存设置,让我们注册自己的缓存RedisCacheManagerBuilderCustomizer豆:

@Bean public RedisCacheManagerBuilderCustomizer RedisCacheManagerBuilderCustomizer () {return (builder) -> builder .withCacheConfiguration("itemCache", rediscacheconfiguration ().entryTtl(Duration.ofMinutes(10))) .withCacheConfiguration("customerCache",RedisCacheConfiguration.defaultCacheConfig () .entryTtl (Duration.ofMinutes (5)));}

在这里,我们使用RedisCacheManagerBuilder随着RedisCacheConfiguration设置TTL值为10分钟和5分钟itemCachecustomerCache,分别。这有助于进一步在每个缓存的基础上调整缓存行为包括值、键前缀和二进制序列化。

值得一提的是,Redis实例的默认连接细节是localhost: 6379复述,配置可以用于进一步调整底层连接细节以及主机和端口。

4.例子

在我们的例子中,我们有ItemService从数据库检索项信息的组件。实际上,这是一个潜在的代价很高的操作,也是缓存的好选择。

首先,让我们使用嵌入式复述,服务器:

@Import({CacheConfig.class, ItemService.class}) @ExtendWith(SpringExtension.class) @EnableCaching @ImportAutoConfiguration(classes = {CacheAutoConfiguration.class, RedisAutoConfiguration.class}) class ItemServiceCachingIntegrationTest {@MockBean private ItemRepository mockItemRepository;@Autowired private ItemService ItemService;@Autowired私有CacheManager CacheManager;@Test void givenrediscaching_whenfinditembyid_thenitemreturns fromcache () {Item anItem = new Item(AN_ID, A_DESCRIPTION);鉴于(mockItemRepository.findById (AN_ID) .willReturn (Optional.of(项);itemCacheMiss = itemService.getItemForId(AN_ID);itemCacheHit = itemService.getItemForId(AN_ID);为了(itemCacheMiss) .isEqualTo(项);为了(itemCacheHit) .isEqualTo(项);验证(mockItemRepository,乘以(1).findById (AN_ID); assertThat(itemFromCache()).isEqualTo(anItem); } }

在这里,我们为缓存行为创建一个测试片,并调用getItemForId两次。第一次调用应该从存储库中获取该项,但是第二次调用应该在不调用存储库的情况下从缓存返回该项

最后,让我们使用Spring启用缓存行为@Cacheable注释:

@Cacheable(value = "itemCache") public Item getItemForId(String id) {return itemRepository.findById(id) .orElseThrow(RuntimeException::new);}

这将应用缓存逻辑,同时依赖于我们之前配置的Redis缓存基础设施。关于控制Spring缓存抽象的属金宝搏官网188be性和行为(包括数据更新和逐出)的进一步细节将在我们的Spring缓存指南篇文章。

5.结论

在本教程中,我们已经看到了如何使用Redis进行Spring缓存。

最初,我们描述了如何用最小的配置自动配置Redis缓存。然后,我们了解了如何通过注册配置bean来进一步定制缓存行为。

最后,我们创建了一个示例用例来在实践中演示这种缓存。

与往常一样,完整的源代码是可用的在GitHub

坚持下
通过引用开始使用Spring Data JPA学习Spring Data JPA课程:1188金宝搏亚洲
客人
0评论
内联反馈
查看所有评论