缓存相信各位同学都或多或少用到过,毕竟不能把所有压力都给数据库。今天来简单总结一下下在Spring Boot中使用Redis和EhCache缓存O(∩_∩)O~
Spring Boot本身是支持多种缓存实现的,其中提供了4个注解来帮助大家使用缓存:
- @EnableCaching 开启缓存支持
- @Cacheable 先检查缓存是否存在,若存在,则直接返回缓存中结果;若不存在,则执行方法获取结果,并将结果放到缓存中
- @CacheEvict 清除缓存
- @CachePut 始终执行方法,并将结果放到缓存中
先说一下EhCache,EhCache是在内存中的缓存,也就是说,程序在,缓存就在,程序停了,缓存就没了,要使用EhCache,首先引入pom starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
在启动类上开启缓存支持:
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
下来只需要在方法上加上注解就行了:
@Cacheable(value="user",key = "#user.id")
public User findOne(User user) {
User u=userRepository.findOne(user.getId());
return u;
}
可以看到,在注解中指定了value和key两个参数,value是用来归类用的,以上方法所生成的所有缓存在缓存库中都存放在user文件夹下;key是用来指定缓存键值的,它有两种生成策略——默认策略和自定义策略,其默认策略如下:
- 如果方法没有参数,则使用0作为key
- 如果只有一个参数,则使用该参数作为key
- 如果参