Redis:实例结合源码分析Jedis连接池原理以及Jedis连接池的实现

 

目录

 

前言

示例

1. 添加依赖

2. 添加配置

3. 注入redis模板对象

4. 执行set操作

jedis连接池

1. redis自动配置

2. 创建JedisConnectionConfiguration

3. 创建JedisClientConfiguration

4. 创建单机配置RedisStandaloneConfiguration

5. 创建JedisConnectionFactory

6. 初始化JedisConnectionFactory

①创建连接池JedisPool:

②创建JedisFactory:

③初始化连接池:

7. 声明操作模板

8. 获取连接工厂

9. 获取连接

①创建连接:

②归还连接:

10. 连接管理

①驱除连接:

②创建连接:

结语


前言

我们都知道 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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值