SpringBoot项目的Redis max-active配置值

Har*_*ana 2 java spring redis spring-boot

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

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

# <!-- Maximum active connections to Redis instance -->
spring.redis.pool.max-active=8
Run Code Online (Sandbox Code Playgroud)

文档中的默认值为 8。

然后,我将其设置为 1 并使用多个命中 redis repo 的调用进行测试。虽然我预计会出现错误消息,redis 连接不可用,但我没有收到任何错误。

我在这里缺少什么?

更新问题:

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

在启用 @Transactional 的情况下使用 Spring Data Redis 时,连接从第一次 Redis 访问开始绑定,直到事务提交/回滚。

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

mp9*_*1de 5

简而言之

这取决于你打算做什么。

解释

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

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

当使用带有启用的 Spring Data Redis 时@Transactional,连接从第一次 Redis 访问开始绑定,直到事务提交/回滚。

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