maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
properties配置
spring.redis.host=192.168.10.100
spring.redis.port=6379
spring.redis.password=
spring.redis.timeout=3600ms
#最大连接数
spring.redis.lettuce.pool.max-active=8
#最大空闲连接
spring.redis.lettuce.pool.max-idle=8
#默认-1 最大连接阻塞等待时间
spring.redis.lettuce.pool.max-wait=-1ms
#最小空闲连接
spring.redis.lettuce.pool.min-idle=0
RedisConfig缓存配置类
RedisTemplate<Object, Object> 是 默认使用jdk的序列化机制,所以我们需要定义自己的序列化机制。
@Configuration
@EnableCaching
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {
public RedisConfig() {
System.out.println("RedisConfig容器启动初始化。。。");
}
@Resource
private LettuceConnectionFactory lettuceConnectionFactory;
// keyGenerator:key的生成器;可以自己指定key的生成器的组件id.
// key/keyGenerator:二选一使用;
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuffer sb = new StringBuffer();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
// 缓存管理器
@Bean
public CacheManager cacheManager() {
RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(lettuceConnectionFactory);
@SuppressWarnings("serial")
Set<String> cacheNames = new HashSet<String>() {
{
add("codeNameCache");
}
};
builder.initialCacheNames(cacheNames);
return builder.build();
}
@Bean
public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory){
RedisTemplate<String,Serializable> template = new RedisTemplate<String,Serializable>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());// Hash key序列化
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());// Hash value序列化
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
public StringRedisTemplate stringRedisTemplate(LettuceConnectionFactory redisConnectionFactory){
StringRedisTemplate template = new StringRedisTemplate();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());// Hash key序列化
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());// Hash value序列化
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
测试
@Autowired
RedisTemplate<String, Serializable> redisTemplate2;
@Test
void test3(){
Employee empById = employeeMapper.getEmpById(2);
redisTemplate2.opsForValue().set("qwe",empById);
}