SpringBoot项目的Redis最大活动配置值

时间:2016-07-13 02:18:03

标签: java spring spring-boot redis

我已经为Spring启动应用程序实现了redis。

我应该在application.properties中为以下配置输入什么值?

# <!-- Maximum active connections to Redis instance -->
spring.redis.pool.max-active=8

文档中默认为8。

然后,我将其设置为1并使用多次调用进行测试,这些调用将命中redis repo。虽然我期待一个错误说,redis连接不可用,但我没有收到任何错误。

我在这里缺少什么?

更新问题:

正如下面提到的mp911de,我在我的rest控制器方法中添加了@Transactional并让线程等待10秒。

  

在启用@Transactional时使用Spring Data Redis时,   连接从第一个Redis访问绑定到事务   承诺/回滚。

我已将spring.redis.pool.max-active设置为1,然后调用另一个使用redis的rest api方法,而第一次rest调用仍处于等待状态。所以在这种情况下,我想连接不可用的例外吗?

2 个答案:

答案 0 :(得分:3)

简而言之

这取决于你计划做什么。

说明

良好的值是应用程序中最大并发请求数的50%到100%。 Redis连接仅在非事务模式下Redis操作期间租用。

您需要在类路径上使用commons-pool2池设置才能生效。早期版本的Jedis / Spring Boot不需要commons-pool2

将Spring Data Redis与启用的@Transactional一起使用时,连接将从第一个Redis访问绑定,直到提交/回滚事务为止。

如果最大并发线程数看起来不合理,并且您不使用事务/阻塞操作,那么您可能需要查看lettuce driver集成。生菜只需要一个连接,但它需要更多的依赖性,你需要自己配置RedisConnectionFactory

答案 1 :(得分:0)

你没有遗漏任何东西,真的 - mp911de很好地解释了这一点。最大活动限制仅限制可以同时处于活动状态的连接数 - 所有其他请求线程将被阻塞,直到连接可用。

至于您应该允许的最大连接数 - 这实际上取决于您的用例和Redis服务器。但一般来说,对于RDBMS系统(和Redis应该没那么大的不同),20左右是合理的限制 - 请参考this link进一步解释。但是,你不应该提前设定一个大的限制。始终通过负载和性能测试来证实您的决定。