java - Spring Boot 项目的 Redis max-active 配置值

标签 java spring spring-boot redis

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

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

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

文档中默认为 8。

然后,我将其设置为 1 并使用多次调用来测试 redis 存储库。虽然我预计会出现错误提示,redis 连接不可用,但我没有收到任何错误。

我在这里错过了什么?

更新问题:

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

When using Spring Data Redis with enabled @Transactional, the connection is bound from the first Redis access until the transaction is committed/rolled back.

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

最佳答案

简而言之

这取决于您打算做什么。

解释

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

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

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

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

关于java - Spring Boot 项目的 Redis max-active 配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341618/

相关文章:

java - 具有类注册的工厂方法模式会产生空指针异常

java - 将 jpanel 清除为透明

java - 仅为 Java bean 的第一次页面刷新设置变量?

java - 如何使有状态的 JBehave 步骤对于多线程执行是安全的

java - 如何仅为用户自己的端点启用请求

java - Maven 找不到 JavaFX

java - 在 Spring MVC Controller 中创建的 cookie 上设置 http-only

java - Spring Boot、Thymeleaf 和@Controller

java - 如何检查用户是否是 thymeleaf 中当前帖子/主题的所有者?

java - 在Spring Boot应用程序中,不执行基于注释的切入点