一、基本配置
spring:
#cache
cache:
type: redis
redis:
cache-null-values: false
time-to-live: 600000
use-key-prefix: true
cache-names: userCache,roleCache,privCache
#redis
redis:
lettuce:
pool:
max-active: 7
max-idle: 7
min-idle: 3
max-wait: -1
shutdown-timeout: 200
host: localhost
port: 6379
pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
开启缓存(在启动类中开启)
@EnableCaching
二、缓存中相关的注解以及配置
注解名称 | 使用场景 | 使用方法 |
---|---|---|
@Cacheable | 将数据以一定的条件存储到缓存中,并根据一定的条件拿取 | @C一、基本配置 |
spring:
#cache
cache:
type: redis
redis:
cache-null-values: false
time-to-live: 600000
use-key-prefix: true
cache-names: userCache,roleCache,privCache
#redis
redis:
lettuce:
pool:
max-active: 7
max-idle: 7
min-idle: 3
max-wait: -1
shutdown-timeout: 200
host: localhost
port: 6379
pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
开启缓存(在启动类中开启)
@EnableCaching
二、缓存中相关的注解以及配置
@Cacheable:将数据以一定的条件存储到缓存中,并根据一定的条件拿取|
@Cacheable(value="cacheName",key="#key",condition ="",unless="")
示例:
@Cacheable(
value = "queryPage",
key="#pageQuery.data.roleName",
condition = "''.equals(#pageQuery.data.roleName)",
unless = "#result == null")
public @interface Cacheable {
@AliasFor("cacheNames")
String[] value() default {};
@AliasFor("value")
String[] cacheNames() default {};
String key() default "";
String keyGenerator() default "";
String cacheManager() default "";
String cacheResolver() default "";
String condition() default "";
String unless() default "";
boolean sync() default false;
}
value:可以当做key的前缀,可以避免不同的场景存在key值相同的情况
key:key值,固定的值使用‘’,也可以使用spel表达式
condition:存储条件,为true的时候存储
unless:存储条件,为true的时候不存储
result:为返回的结果(查询结果)
注意:在进行存储的时候key值不应为null,在开发中key值缺省的时候,每次都进行存储操作,但是没法进行获取操作,即不在缓存中拿数据,但是随着页面的刷新访问次数的增加,缓存中的数据回越来越多
@CacheEvict:清空缓存
public @interface CacheEvict {
@AliasFor("cacheNames")
String[] value() default {};
@AliasFor("value")
String[] cacheNames() default {};
String key() default "";
String keyGenerator() default "";
String cacheManager() default "";
String cacheResolver() default "";
String condition() default "";
boolean allEntries() default false; #是否全部清空
boolean beforeInvocation() default false;
}
@CacheEvict(value = "roleListCache", allEntries = true),
@Cacheput更新缓存
@Caching包含上述
public @interface Caching {
Cacheable[] cacheable() default {};
CachePut[] put() default {};
CacheEvict[] evict() default {};
}
@Caching(evict = {
@CacheEvict(value = "roleListCache", allEntries = true),
@CacheEvict(value = "roleListSizeCache", allEntries = true)
})
网友评论