redis模板在执行redis操作时是否会引发connectimeout异常



我对连接超时和读取超时之间的区别有点困惑。我知道redis可能会在应用程序启动并设置初始连接时抛出连接超时异常。我的问题是,在执行redis事务时,应用程序启动后,redis是否会引发连接超时?。

连接池的工作方式是,正在运行的事务从连接池请求redis连接。如果没有按时提供连接,这会被视为可能引发连接超时的事件吗?。然后,一旦事务有了连接,它就会执行redis操作,这时可能会出现读取超时。

对以下与例外情况有关的jedis要素进行解释将有所帮助:

jedis:
pool:
max-active: 5
max-idle: 5
max-wait: -1ms
min-idle: 3

我切换到以下默认设置,http请求似乎平均从邮递员那里执行得更快:

jedis:
pool:
max-active: 8
max-idle: 8
max-wait: -1ms
min-idle: 0

为什么会发生这种情况?

空闲连接和活动连接的定义是什么?

从单据报价

jedis.pool.max-active可以由池在给定时间分配。使用负值表示否限度

CCD_ 2;空闲";中的连接水塘使用负值表示无限制的空闲次数连接。

jedis.pool.max-wait连接分配的最长时间应该在池耗尽时抛出异常之前进行阻塞。使用负值可以无限期地阻止。

jedis.pool.min-idle最小空闲次数的目标要在池中维护的连接。此设置仅起作用如果它和驱逐运行之间的时间都是正的。

jedis.pool.time-between-eviction-runs空闲运行之间的时间对象驱逐线程。当为正时,空闲对象逐出器线程启动,否则不执行空闲对象逐出。

增加max-active/max-idle只意味着您将拥有一些额外的连接。由于您已将连接数从5增加到8,因此您可以并行发送3个其他请求。另一方面,您已经将max-wait设置为-1,因此您可能会无限期地等待。

空闲连接:当连接从连接池中取出时,一旦使用结束,它就会被放回连接池中。连接池使用两个参数来决定连接是被丢弃还是以后可以使用。根据驱逐超时,活动连接将在驱逐超时后关闭,例如,如果驱逐超时为5秒,并且该连接是在10秒前创建的,则可以关闭该连接以到达max-idle连接。如果活动连接的数量低于max-idle,则可以保留并重用该连接。

最新更新