1.添加相关依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
2.在springBoot启动类添加@EnableCaching的注解
@SpringBootApplication @EnableCaching public class SellApplication { public static void main(String[] args) { SpringApplication.run(SellApplication.class, args); } }
3.将要存储进redis的对象继承序列化相应的接口
在idea下载相应快速生成序列化uuid的插件
给插件使用添加快捷键
要存储进redis对象的操作:
@Data //1.继承序列化接口,使对象可序列化 public class ResultVO<T> implements Serializable { //2.使用插件生成对象序列化UUID private static final long serialVersionUID = 1494345419144039338L; private Integer code; private String msg; private T data; public ResultVO() { } }
4.redis缓存相应的例子:
@GetMapping("/list") @Cacheable(cacheNames = "products",key = "123",condition = "#sellerId.length()>0",unless = "#result.getCode()!=0") //@Cacheable:第一次访问该方法,会将该方法返回的对象(可序列化)存进redis缓存, //第二次访问该方法后,则不会运行该方法体了,会直接从redis中取值 //condition的作用域是执行该方法前,针对方法的参数 //unless的作用域是执行该方法后,针对方法的返回的对象,表示如果不,就是判定条件取反 public ResultVO list(@RequestParam(value = "sellerId") String sellerId){...}
防止缓存后,修改数据库数据后,页面显示的数据不变,应在保存的方法清除缓存或更新缓存
清除缓存:
@CacheEvict(cacheNames = "products",key = "123")//清除缓存 @PostMapping("/save") public ModelAndView save(){...}
更新缓存:
使用@CachePut(cacheNames = "products",key = "123")
但是保存的对象,应与添加了@Cacheable的方法返回对象相同才可