下面给出 SpringBoot 使用 Caffeine 实现缓存的示例代码的完整攻略。
1. 添加 Caffeine 依赖
在 pom.xml 文件中添加 Caffeine 依赖:
<!--Caffeine-->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.0</version>
</dependency>
2. 添加缓存配置类
创建一个类 CaffeineConfig ,用于配置 Caffeine 缓存。添加 @Configuration
注解表示该类是一个配置类,并通过 @EnableCaching
开启缓存功能。
@Configuration
@EnableCaching
public class CaffeineConfig {
@Bean
public Caffeine<Object, Object> caffeineConfig() {
return Caffeine.newBuilder()
// 设置缓存容器最大缓存数量
.maximumSize(500)
// 设置缓存过期时间
.expireAfterWrite(30, TimeUnit.SECONDS);
}
}
3. 定义缓存方法
在需要使用缓存的方法上添加 @Cacheable
注解,并指定缓存名称和键的生成条件。
@Service
public class UserServiceImpl implements UserService {
// 注入 Caffeine 缓存容器对象
@Autowired
private Caffeine<Object, Object> caffeine;
@Override
@Cacheable(value = "user", key = "#id")
public User getUserById(Long id) {
// 模拟从数据库中获取用户信息的过程
User user = new User();
user.setId(id);
user.setUsername("user" + id);
user.setPassword("password" + id);
return user;
}
}
4. 测试缓存效果
编写一个测试类,测试缓存的效果。
@SpringBootTest
class UserServiceImplTest {
@Autowired
private UserService userService;
@Test
void getUserById() {
// 第一次查询,缓存中没有数据,从数据库中获取
User user1 = userService.getUserById(1L);
System.out.println(user1);
// 第二次查询,查询缓存
User user2 = userService.getUserById(1L);
System.out.println(user2);
}
}
输出结果如下:
User(id=1, username=user1, password=password1)
User(id=1, username=user1, password=password1)
可以看到,第一次查询时,从数据库中获取了用户信息,并存放到 Caffeine 缓存中,第二次查询时,直接从缓存中获取了数据,提高了查询效率。
另外,我们也可以设置缓存的过期时间,如下所示:
@Cacheable(value = "user", key = "#id")
public User getUserById(Long id) {
// 模拟从数据库中获取用户信息的过程
User user = new User();
user.setId(id);
user.setUsername("user" + id);
user.setPassword("password" + id);
return user;
}
在这个示例中,我们将缓存容器的最大容量设置为 500 ,缓存数据过期时间为 30 秒。这样,缓存中的数据会在 30 秒后自动失效,如果再次查询该数据,将会从数据库中获取最新数据并更新缓存。这样可以保证缓存数据的新鲜度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot使用Caffeine实现缓存的示例代码 - Python技术站