通用缓存SpringCache
Spring Cache是Spring提供的通用缓存框架。它利用了AOP,实现了基于注解的缓存功能,使开发者不用关心底层使用了什么缓存框架,只需要简单地加一个注解,就能实现缓存功能了。用户使用Spring Cache,可以快速开发一个很不错的缓存功能。
6.1. 重要概念
名称 | 解释 |
---|---|
@Cacheable | 主要针对方法配置,能够根据方法的请求参数对其进行缓存 |
@CacheEvict | 清空缓存 |
6.2. 入门案例
6.2.1 导入依赖
导入SpringDataRedis的依赖,并在application.yml中配置 (略)
6.2.2 开启缓存支持
然后在启动类注解@EnableCaching开启缓存
@SpringBootApplication
@EnableCaching //开启缓存
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Cacheable
注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存。
@Cacheable(value = "user",key = "#userId") public UserInfo queryById(Long userId) { //从数据库查询 UserInfo user = new UserInfo(); user.setId(userId); user.setNickname("ceshi"); return user; }
@CachEvict
的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空 。
//根据id修改 @CacheEvict(value = "user",key = "#userId") public void update(Long userId) { //修改用户 UserInfo user = new UserInfo(); user.setId(userId); user.setNickname("itcast"); }
tanhua-app-server
-
修改VideoService,
//查询视频列表 @Cacheable( value="videos", key = "T(com.tanhua.server.interceptor.UserHolder).getUserId()+'_'+#page+'_'+#pagesize") //userid _ page_pagesize public PageResult queryVideoList(Integer page, Integer pagesize) { ..... }
/** * 发布小视频 */ @CacheEvict(value="videos",allEntries = true) //清空缓存 public void saveVideos(MultipartFile videoThumbnail, MultipartFile videoFile) { ..... }