②. Spring cache入门案列@Cacheable
- ①. 导入pom文件,在主启动类上添加@EnableCaching
<!--引入redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!--cache--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
@EnableCaching @SpringBootApplication public class testSpringCache{ public static void main(String[] args) { SpringApplication.run(testSpringCache.class, args); } }
//application.properties spring.cache.type=redis #spring.cache.cache-names=
②. 业务类
/** * @Cacheable *(代表当前方法的结果需要缓存,如果缓存中有,方法不用调用 *如果缓存中没有,会调用方法,最后将方法的结果放入到缓存) *1、每一个需要缓存的数据我们都来指定要放到那个名字的缓存(缓存的分区,按照业务类型分) *2、默认行为 * (1). 如果缓存中有,方法不再调用 * (2). key是默认自动生成的,包含缓存名字::SimpleKey(自动生成的key值) * (3). 缓存的value的值。默认使用jdk序列化机制,将序列化后的数据存到redis * (4). 默认过期时间是 -1 */ @Cacheable(value={"category"}) @Override public List<CategoryEntity> getLevel1Category() { long l= System.currentTimeMillis(); QueryWrapper<CategoryEntity> wrapper = new QueryWrapper<>(); wrapper.eq("parent_cid",0); List<CategoryEntity> entities = baseMapper.selectList(wrapper); log.info("消耗时间:"+(System.currentTimeMillis()-l)); return entities; }