前言:
springboot2.0版本之后,整合redis的底层从jedis替换成了lettue
- jedis:采用的是直连的server,多线程操作不安全,解决办法是使用jedis pool 连接池。类似Bio模式
- lettuce: 采用netty,实例可以在多个线程中共享,线程安全,可以减少线程数量。类似Nio模式
源码分析:
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")//可自定义Template来替换这个默认的
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
//默认的 RedisTemplate没有过多设置,redis对象都需要序列化
//两个泛型都是Object,后续使用需要强制转型,常用的是<String,Object>
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean//String是redis常用类型,所有单独提出这个bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisCo