目录
2. 创建JedisConnectionConfiguration
4. 创建单机配置RedisStandaloneConfiguration
前言
我们都知道 Jedis 是 Redis 的 Java 实现客户端,提供了比较全面的Redis命令的支持,它集成了Redis的一些命令操作,封装了Redis的Java客户端,提供了连接池管理。而本文将从实例并结合源码分析jedis连接池原理,其中包括如何创建连接、释放连接、驱除连接以及如何确保最小空闲数量的连接
示例
1. 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies>
2. 添加配置
spring:
redis:
url: redis://localhost:6379
client-type: jedis
jedis:
pool:
min-idle: 10
max-active: 10
3. 注入redis模板对象
@Autowired
private StringRedisTemplate stringRedisTemplate;
4. 执行set操作
@Test
public void test() throws InterruptedException {
stringRedisTemplate.opsForValue().set("hello", "world");
}
jedis连接池
在了解spring-boot-starter-xxx模块原理之前,我们需要先分析xxxAutoConfiguration
1. redis自动配置
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
配置注入功能通过@EnableConfigurationProperties注解开启后,RedisProperties对象中就会被自动注入在application.yml中关于redis的配置,@Import注解引入jedis、lettuce客户端连接配置,在此处引入的是JedisConnectionConfiguration配置,因为在yml配置中已声明了jedis客户端
2. 创建JedisConnectionConfiguration
protected RedisConnectionConfiguration(RedisProperties properties,
ObjectProvider<RedisSentinelConfiguration> sentinelConfigurationProvider,
ObjectProvider<RedisClusterConfiguration> clusterConfigurationProvider) {
this.properties = properties;
this.sentinelCon