我已经为Spring Boot应用程序实现了Redis。
对于application.properties中的以下配置,我必须输入什么值?
# <!-- Maximum active connections to Redis instance -->
spring.redis.pool.max-active=8
在文档中默认为8。
然后,将其设置为1并使用多个调用进行测试,这些调用会命中redis repo。尽管我预计会出现错误,redis连接不可用,但没有收到任何错误。
我在这里想念什么?
更新问题:
如下面的mp911de所述,我在我的rest Controller 方法中添加了@Transactional,并使线程等待10秒。
我已将spring.redis.pool.max-active设置为1,然后调用了另一个rest api方法,该方法在第一次rest调用仍在等待时使用redis。所以在这种情况下,我想得到连接不可用的异常对吗?
最佳答案
简而言之
这取决于您打算做什么。
说明
一个好的值是应用程序中最大并发请求数的50%到100%。 Redis连接仅在非事务模式下的Redis操作期间租用。
您必须在类路径上将commons-pool2
设置为池设置才能生效。 Jedis / Spring Boot的早期版本不需要commons-pool2
。
当使用启用了@Transactional
的Spring Data Redis时,连接将从第一次Redis访问开始绑定(bind),直到事务被提交/回滚为止。
如果最大并发线程数看起来不合理,并且您不使用事务/阻塞操作,那么您可能想看看lettuce driver集成。生菜只需要一个连接,但这要付出更多依赖的代价,并且您需要自己配置RedisConnectionFactory
。
关于java - Spring Boot项目的Redis最大 Activity 配置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38341618/