spring boot 项目使用spring cache 快速入门(使用redis缓存技术)

spring cache介绍

Spring Cache就是一个这个框架。它利用了AOP,实现了基于注解的缓存功能,并且进行了合理的抽象,业务代码不用关心底层是使用了什么缓存框架,只需要简单地加一个注解,就能实现缓存功能了。而且Spring Cache也提供了很多默认的配置。
CacheManager是spring提供的各种缓存技术抽象接口,用来统一不同的缓存技术,不同技术有不同的CacheManager。

导入坐标

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-redisartifactId>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-cacheartifactId>
dependency>

配置

spring:
  redis: #如果有密码要配置password
    host: 127.0.0.1
    port: 6379
    database: 0
  cache:
    redis:
      time-to-live: 1800000 #设置缓存的过期时间30min

常用注解

注解 说明
@EnableCaching 开启spring cache注解方式的缓存功能,一般加在启动类上
@Cacheable 在该方法执行之前该方法前,spring会去检查是否缓存中已经有值,如果有就直接返回,不调用方法。如果没有,就调用方法,然后把结果缓存起来。一般用在查询方法上
@CachePut 把方法的返回值put到缓存里面缓存起来,供其它地方使用。通常用在新增方法上。
@CacheEvict 使用了CacheEvict注解的方法,会清空指定缓存。一般用在更新或者删除的方法上

使用案例

@Cacheable(value = "setmealCache" ,key = "#a")
public User list(Long a,User user){
	return null;
}
    key = "#categoryId+'_'+#status"
    public class R<T> implements Serializable

参数说明:
value: value属性是必须指定的,其表示当前方法的返回值是会被缓存在哪个Cache上的,对应Cache的名称。其可以是一个Cache也可以是多个Cache,当需要指定多个Cache时其是一个数组。
key:key属性是用来指定Spring缓存方法的返回结果时对应的key的。该属性支持SpringEL表达式。

上面的代码中key还可以这样写:

key = "#a"//使用参数的名称
key = "#p0"//这里的P是固定的,后面的数字代表第几个参数

key = "#user.id"
key = "#p1.id"

//还可以通过拼接字符串动态生成key
key = "#a+'_'+#user.id"

注意: 如果报错:java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type
是因为没有序列化User,只需要在User上加上implements Serializable即可解决:

public class User  implements Serializable

你可能感兴趣的:(缓存,缓存,spring,redis)