springboot项目中,数据查询一次然后做缓存。下次不再从数据库里查,直接用缓存
时间: 2024-05-04 09:20:25 浏览: 233
在 Spring Boot 中,可以使用 Spring Cache 来实现数据的缓存。Spring Cache 提供了一种非常简单的方法来实现缓存,只需要在方法上添加 @Cacheable、@CachePut 或者 @CacheEvict 注解即可。
首先,需要在项目中添加 Spring Cache 的依赖,例如使用 Redis 做缓存,可以添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
然后,在需要缓存的方法上添加 @Cacheable 注解,例如:
```java
@Cacheable(value = "user", key = "#id")
public User getUserById(Long id) {
// 从数据库中查询用户信息
User user = userRepository.findById(id);
return user;
}
```
这样,第一次调用 getUserById 方法时,会从数据库中查询用户信息,并将查询结果缓存起来。下次再次调用该方法时,会直接从缓存中获取数据,而不再去数据库中查询。
需要注意的是,@Cacheable 注解中的 value 属性表示缓存的名称,key 属性表示缓存的键值,即缓存数据时使用的键。可以根据需要自定义缓存名称和键值,以便更好地管理缓存数据。
另外,如果需要更新缓存中的数据,可以使用 @CachePut 注解,例如:
```java
@CachePut(value = "user", key = "#user.id")
public User updateUser(User user) {
// 更新用户信息
User updatedUser = userRepository.update(user);
return updatedUser;
}
```
这样,当调用 updateUser 方法时,会更新数据库中的用户信息,并将新的用户信息缓存起来。
如果需要删除缓存中的数据,可以使用 @CacheEvict 注解,例如:
```java
@CacheEvict(value = "user", key = "#id")
public void deleteUserById(Long id) {
// 删除用户信息
userRepository.deleteById(id);
}
```
这样,当调用 deleteUserById 方法时,会删除指定 id 的用户信息,并从缓存中删除对应的缓存数据。
阅读全文