使用JedisPoolConfig参数* blockWhenExhausted *

时间:2016-07-13 14:28:53

标签: java redis apache-commons jedis spring-data-redis

所以我有一个项目,我使用Spring-Data-Redis来缓存一些数据。使用Bean配置使用Jedis设置Spring-Data-Redis

我查找了可以修改的JedisPoolConfig参数来控制我的缓存和应用程序的行为。

我想知道属性blockWhenExhausted的使用,它是可配置属性的一部分。 默认值是true,这个默认值会调用什么行为? 如果该值更改为false,这会带来什么样的行为?

1 个答案:

答案 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。