简介
之前在项目中遇到了一个新需求,领导让我运用本地缓存,来缓存数据库查出的用户信息,经过一番资料查阅和试验,终究确认了运用Caffeine来作为完结方案,接下来我将简单介绍一下完结的过程和思路:
Caffeine 介绍
官网地址:github.com/ben-manes/c…
大家只需要知道:Caffeine 是一个高功能的本地缓存库就能够了,接下来咱们将在项目实践中运用caffeine缓存。
思路
如果要运用 Springboot + Caffeine 完结本地缓存,咱们需要完结以下过程:
- 要在 Springboot 中运用 Caffeine,首要需要在 pom.xml 文件中增加 Caffeine 的依靠
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.5</version>
</dependency>
- 然后,能够运用 @EnableCaching 注解启用缓存,并运用 @Cacheable 注解标记要缓存的办法:
@EnableCaching
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 在需要缓存的办法上增加 @Cacheable 注解。
@Cacheable(value = "users", key = "#userId")
public User getUserById(Long userId) {
// 查询用户
}
- 在办法的完结中,运用 Caffeine 缓存 API 拜访和操作缓存。
例如,假设咱们有一个类叫做 UserService,其中有一个办法叫做 findById,用于依据用户 ID 查找用户信息。
下面是怎么运用 Springboot + Caffeine 完结该办法的缓存:
@Service
public class UserService {
// 界说缓存称号
private static final String CACHE_NAME = "users";
// 声明 Caffeine 缓存
private final Cache<Long, User> cache;
// 注入缓存提供者
@Autowired
public UserService(CacheManager cacheManager) {
this.cache = cacheManager.getCache(CACHE_NAME);
}
// 依据用户 ID 查找用户信息
@Cacheable(CACHE_NAME)
public User findById(Long id) {
// 从缓存中查找用户
User user = cache.getIfPresent(id);
if (user == null) {
// 缓存中没有用户,则从数据库中查找
user = findByIdFromDb(id);
if (user != null) {
//如果从数据库中找到了用户,则将用户信息放入缓存
cache.put(id, user);
}
}
return user;
}
在上面的代码中,咱们运用了 Springboot 的 @Cacheable 注解来标记 findById 办法,表明该办法的返回值需要被缓存。
在办法中,咱们运用 Caffeine 缓存 API 来操作缓存,例如获取缓存中的数据、更新缓存数据等。
经过运用 Springboot + Caffeine 完结本地缓存,咱们能够进步体系的功能和响应速度,避免重复的计算和数据库拜访。
此外,Springboot 提供了丰厚的缓存装备选项,咱们能够依据实际情况调整缓存的巨细、过期时间等参数,以满意不同的功能要求。Springboot Caffeine 是一个用于缓存的库,它能够用来缓存体系中的数据,以进步体系的功能。
Caffeine 能够经过装备来设置缓存的各种参数,例如缓存的巨细、过期时间等。经过在 application.properties 文件中增加相应的装备项来进行装备:
# 缓存称号
spring.cache.cache-names=users
# 缓存的最大条目数
spring.cache.caffeine.users.maximum-size=1000
# 缓存的过期时间(单位:分钟)
spring.cache.caffeine.users.expire-after-write=60
上面是 Caffeine 缓存的根本运用办法,具体装备项能够参阅官方文档了解更多细节。
本文运用开发环境
- JDK:1.8
- Caffeine:2.8.1
- Maven
本文正在参与「金石方案 . 分割6万现金大奖」