所以我有一个项目,我使用Spring-Data-Redis
来缓存一些数据。使用Bean配置使用Jedis设置Spring-Data-Redis
。
我查找了可以修改的JedisPoolConfig
参数来控制我的缓存和应用程序的行为。
我想知道属性blockWhenExhausted
的使用,它是可配置属性的一部分。
默认值是true
,这个默认值会调用什么行为?
如果该值更改为false
,这会带来什么样的行为?
答案 0 :(得分:2)
该值会更改GenericObjectPool.borrowObject(long borrowMaxWaitMillis)
的行为使用特定的等待时间从池中借用一个对象,该等待时间仅在BaseGenericObjectPool.getBlockWhenExhausted()为true时才适用。
这意味着当您将blockWhenExhausted
设置为false
时,不会使用borrowMaxWaitMillis指定的时间,并且在从可用池中有空闲的jedis连接之前,borrowObject调用将被阻塞。
如果池已耗尽(没有可用的空闲实例且无法创建新实例),则此方法将阻止(如果BaseGenericObjectPool.getBlockWhenExhausted()为true)或抛出NoSuchElementException(如果BaseGenericObjectPool.getBlockWhenExhausted()为false )
但有趣的是,我看不出JedisPool
实现实际上是使用borrowObject(long borrowMaxWaitMillis)
方法。
我只能看到在getResource (in the version 3.0.0-SNAPSHOT)期间调用borrowObject(不带参数)。所以我不确定所描述的行为是否也适用于JedisPool。