Redis 客户端之 Jedis ——JedisPool 分析

本文详细分析了JedisPool的配置类JedisPoolConfig,包括其参数含义和默认值,如evictionPolicy、timeBetweenEvictionRunsMillis等。探讨了JedisPool的检查策略,如何激活evict schedule,以及Evictor Timer的作用。同时,解释了maxIdle参数的作用,即控制空闲连接的最大数量,并确保至少有minIdle个空闲连接。文章强调了正确设置检查参数以保证minIdle和maxIdle生效的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jedis

jedis 是 redis 官方推荐的 java 客户端,目前稳定的版本是 2.9.0

JedisPool

jedisPool 是 Jedis 内部管理到 redis 的连接资源,内部的实例是 Jedis,通过连接池策略来优化对 redis 的访问。

JedisPoolConfig

JedisPoolConfig是创建 JedisPool的配置类,继承自 ApacheGenericObjectPoolConfig
GenericObjectPoolConfig 类各参数默认值和意义:

blockWhenExhausted 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true

evictionPolicyClassName 设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)

lifo 是否启用后进先出, 默认true 

maxTotal 最大连接数, 默认8个(连接池能创建的最大连接数量)

maxIdle 最大空闲连接数, 默认8个(在连接 return 到 连接池时,如果空闲连接数 == maxIdle 则直接关闭连接,一般建议该值和 maxTotal 相等)

minIdle最小空闲连接数, 默认0 (该参数会保证 连接池 中在没有达到 maxTotal 时,一直会保持 minIdle 的空闲连接数,但是定时任务是否启动,由下一个参数决定) 

maxWaitMillis 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1

timeBetweenEvictionRunsMillis 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 
 
minEvictableIdleTimeMillis 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)

numTestsPerEvictionRun 每次逐出检查时 逐出的最大数目 如果为负数就是 : idle.size()/abs(n), 默认3

softMinEvictableIdleTimeMillis 对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值