通用缓存SpringCache

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注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存。

@Cacheable(value = "user",key = "#userId")
public UserInfo queryById(Long userId) {
    //从数据库查询
    UserInfo user = new UserInfo();
    user.setId(userId);
    user.setNickname("ceshi");
    return user;
}

此处的value是必需的,它指定了你的缓存存放在哪块命名空间。

清除@CacheEvict

@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) {
    .....
}

*修改VideoService,发布视频清空缓存**

/**
* 发布小视频
*/
@CacheEvict(value="videos",allEntries = true) //清空缓存
public void saveVideos(MultipartFile videoThumbnail, MultipartFile videoFile) {
.....
}

 

posted @ 2022-01-13 15:17  互联.王  阅读(587)  评论(0编辑  收藏  举报