springboot代码中如何获取jedisPool的配置参数

本文详细解析了在Spring Boot项目中如何通过跟踪参数初始化过程,获取Jedis连接池配置参数。从JedisConnectionConfiguration类入手,深入探讨了createJedisConnectionFactory()方法的工作流程,最终展示了如何通过RedisUtil类获取jedisPool配置参数。
部署运行你感兴趣的模型镜像

最近项目中本地代码需要获取到Jedis配置参数,特意从springboot启动跟踪的整个参数的初始化、赋值过程,特将知识点记录如下。
1.spring-boot-autoconfigure包下面集成了对redis客户端的config类,有Jedis,Lettuce,本次关注的是Jedis。
2.我们找到对应的配置类 JedisConnectionConfiguration,从下图可以看到注解中加入了连接池,和Jedis

@Configuration
@ConditionalOnClass({ GenericObjectPool.class, JedisConnection.class, Jedis.class })
class JedisConnectionConfiguration extends RedisConnectionConfiguration {

3.往下我们找到 createJedisConnectionFactory()方法,改方法完成了redis连接的初始化

private JedisConnectionFactory createJedisConnectionFactory() {
		JedisClientConfiguration clientConfiguration = getJedisClientConfiguration();
		if (getSentinelConfig() != null) {
			return new JedisConnectionFactory(getSentinelConfig(), clientConfiguration);
		}
		if (getClusterConfiguration() != null) {
			return new JedisConnectionFactory(getClusterConfiguration(), clientConfiguration);
		}
		return new JedisConnectionFactory(getStandaloneConfig(), clientConfiguration);
	}

4.一路跟踪方法调用 getJedisClientConfiguration–>applyPooling()—>jedisPoolConfig()

private JedisPoolConfig jedisPoolConfig(RedisProperties.Pool pool) {
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(pool.getMaxActive());
		config.setMaxIdle(pool.getMaxIdle());
		config.setMinIdle(pool.getMinIdle());
		if (pool.getTimeBetweenEvictionRuns() != null) {
			config.setTimeBetweenEvictionRunsMillis(pool.getTimeBetweenEvictionRuns().toMillis());
		}
		if (pool.getMaxWait() != null) {
			config.setMaxWaitMillis(pool.getMaxWait().toMillis());
		}
		return config;
	}

5.在jedisPoolConfig()方法中完成了对配置参数的初始哈,方法入参RedisProperties类就保存了redis客户端的配置参数信息,所以我们只要获取到该类就能获取到jedisPool的配置参数了

@Component
public class RedisUtil {
    @Autowired
    private RedisProperties properties;
    
    public Map<String,String> getJedisPoolProperties(){
        Map<String,String> map = new HashMap<>();
        map.put("maxIdle",String.valueOf(properties.getJedis().getPool().getMaxIdle()));
        map.put("maxActive",String.valueOf(properties.getJedis().getPool().getMaxActive()));
        map.put("maxWait",String.valueOf(properties.getJedis().getPool().getMaxWait()));
        map.put("mainIdle",String.valueOf(properties.getJedis().getPool().getMinIdle()));
        return map;
    }
}

6.到此,我们本次获取jedisPool配置参数就大功告成了。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### Spring Boot 中使用 Jedis 进行 Redis 配置 #### 1. 添加依赖项 为了在项目中集成 Redis 和 Jedis,需修改 `pom.xml` 文件并加入必要的 Maven 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 如果需要特定版本的Jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> ``` 上述配置引入了 Spring Data Redis 支持以及 Jedis 客户端库[^1]。 #### 2. 修改 application.yml 或 properties 文件 接下来,在项目的资源配置文件里定义与 Redis 数据库交互所需参数。对于采用 YAML 格式的配置如下所示: ```yaml spring: redis: host: localhost # Redis服务器地址 port: 6379 # Redis服务器端口,默认为6379 password: # 密码(如果设置了) timeout: 5000 # 超时时间(ms),默认为2秒 lettuce: pool: max-active: 8 # 控制最大活动连接数 max-idle: 8 # 最大空闲连接数量 min-idle: 0 # 初始化最小创建的空闲连接数目 ``` 注意这里虽然指定了 Lettuce 的属性设置方式,但对于 Jedis 来说同样适用;只需替换对应的前缀即可[^2]。 #### 3. 创建自定义配置类 (可选) 当希望进一步定制化行为或实现更复杂的逻辑时,可以编写自己的 Java Config 类来覆盖默认的行为模式。下面是一个简单的例子展示如何通过编程的方式指定连接工厂和其他选项: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; @Configuration public class RedisConfig { @Bean public JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory factory){ final RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); // 可以在这里继续配置序列化器等其他组件... return template; } } ``` 这段代码展示了怎样声明一个基于 Jedis 的连接工厂 bean 并将其注入到另一个用于执行命令操作的对象中去[^3]。 #### 4. 编写业务逻辑层接口和服务实现 最后一步就是利用前面准备好的工具完成实际的数据存取工作啦! 例如要向名为 "myList" 的列表添加元素,则可以在 Repository 接口中定义相应的方法签名: ```java @Repository public interface MyRepository extends CrudRepository<MyEntity, Long>, ReactiveRedisOperations<String, String> {} @Service @Transactional(readOnly=true) public class MyServiceImpl implements MyService{ private static final Logger logger = LoggerFactory.getLogger(MyServiceImpl.class); @Autowired private MyRepository repository; @Override public void addToList(String value) throws Exception { try { ValueOperations<String, String> ops = this.repository.opsForValue(); ListOperations<String, String> listOps = this.repository.opsForList(); listOps.rightPush("myList",value); } catch(Exception e){ throw new RuntimeException(e.getMessage(),e.getCause()); } } } ``` 以上即是在 Spring Boot 应用程序内运用 Jedis 实现对 Redis 列表类型数据结构的操作方法之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值