1.引入reids包
spring-boot-starter-redis(springboot版本1.4版本前),spring-boot-starter-data-redis(1.4版本后)
选择合适的API:
这个主要是根据redis存储的数据类型需求决定,key一般都是String,但是value可能不一样,一般有两种,String和 Object;
如果k-v都是String类型,我们可以直接用 StringRedisTemplate,这个是官方建议的,也是最方便的,直接导入即用,无需多余配置!
如果k-v是Object类型,则需要自定义 RedisTemplate,在这里我们都研究下!
2.配置文件application.yml中redis的配置信息
redis:
host: 127.0.0.1
port: 6379
#连接超时时间(毫秒)
timeout: 2000
pool:
#最大连接数(负数表示没有限制)
max-active: 100
#最大空闲连接
max-idle: 10
#最大阻塞等待时间(负数表示没有限制)
max-wait: 100000
database: 0
3.Redis配置类(注意这里使用spring boot 1.x版本如果2.x版本缓存管理器写法不一样,不再使用RedisTemplate构造,而是使用了RedisConnectionFactory)
@Configuration
@EnableCaching //配置cache Manager
//继承CachingConfigurerSupport类是为了自定义redis key的生成策略(复写keyGenerator方法)
public class RedisConfig extends CachingConfigurerSupport{
//从配置文件中读取配置信息
@Value("${redis.timeout}")
private Long redisTimeout;
/*生成key的策略 根据类名+方法名+所有参数的值生成唯一的一个key **/
@Bean
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
/**
* 管理缓存
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate<?,?> redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
//设置redis缓存过期时间
cacheManager.setDefaultExpiration(redisTimeout);
return cacheManager;
}
/**
* RedisTemplate配置
* jdk序列方式,用来保存对象(key=对象)
* @param factory
* @return
*/
/*@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//自定义的redis序列化工具类(对object序列化)
RedisObjectSerializer redisObjectSerializer = new RedisObjectSerializer();
RedisTemplate<String, Object> template = new Red