SpringBoot2.1.5 集成Redis
SpringBoot2.1.5 集成Redis
1.jedis和lettuce介绍
Lettuce 和 Jedis 的定位都是Redis的client
Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接
Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,因为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。
springboot2之前redis的连接池为jedis,2.0以后redis的连接池改为了lettuce,lettuce能够支持redis4,需要java8及以上。lettuce是基于netty实现的与redis进行同步和异步的通信,之前看到spring-session-data-redis里的samples已经改为使用LettuceConnectionFactory
所以下面我们看下如何来使用Lettuce来操作Redis
2.spring-boot-starter-data-redis
简单介绍下spring-boot-starter-data-redis, 通过看RedisAutoConfiguration的源码
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
可以知道RedisAutoConfiguration完成了对JedisConnectionFactory和LettuceConnectionFactory的自动配置。
同时RedisProperties源码中封装了对redis配置,包括jedis和lettuce
@ConfigurationProperties(
prefix = "spring.redis"
)
private final RedisProperties.Jedis jedis = new RedisProperties.Jedis();
private final RedisProperties.Lettuce lettuce = new RedisProperties.Lettuce();
因此我们在使用时直接通过yml配置即可使用Lettuce来连接Redis,下面