构建基于Spring Boot 2.X应用,使用Cache,需要引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
以前开发Spring用EhCache来做缓存。在做集群或分布式时,还是Redis比较好用。引入Spring Data Redis如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
注意这里会有jedis依赖。
在applicatin.yml配置Redis和Cache:
spring:
cache:
redis:
cache-names:
cache-null-values: false
key-prefix: spring:cache
time-to-live: 0
use-key-prefix: true
type: # Cache type. By default, auto-detected according to the environment.
redis:
database: 5
url: # Connection URL. Overrides host, port, and password. User is ignored. Example: redis://user:password@example.com:6379
host: 127.0.0.1
port: 6379
password:
timeout: 3000
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1
min-idle: 0
更多配置属性可参考Spring Boot官方说明:
新建RedisConfig类,增加如下方法:
/**
* 定义缓存数据 key 生成策略的bean
* 包名+类名+方法名+所有参数
* @return
*/
@Bean
public KeyGenerator wiselyKeyGenerator(){
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder buff = new StringBuilder();
buff.append(target.getClass().getName());
buff.append(method.getName());
for (Object obj : params) {
buff.append(obj.toString());
}
return buff.toString();
}
};
}