springboot1.5.6和springboot2.X.Xredis连接池问题
问题现象
今天从性能监控日志查看,使用junit测试的代码,springboot 2.1.0测试单次一个简单的redis get/set操作都需要耗时600-800ms。
问题排查
发现不同springboot版本,性能差距也特别大
当时使用的是spring.2.1.0,但是切换成springboot1.5.6只能大概耗时是在100毫秒左右。
但是网上说法时springboot2.0 redis使用Lettuce实现按道理性能相差应该不会这么大。
实测结果
springboot:2.1.0
springboot:1.5.6
junit测试获取redis缓存数据改成100次,仅有第一次获取缓存值性能相差巨大
springboot:2.1.0
springboot:1.5.6
查看源码不同springboot 版本对应redis连接池实现
springboot 2.1.0中则是延迟加载实现,只有在具体使用到redis连接池时LettuceConnectionFactory才会创建redis连接池。
springboot 1.5.6的连接池是spring初始化bean时已创建,导致在使用JedisConnectionFactory获取连接时,直接获取就行了。
springboot:2.1.0
源码跟踪发现,第一次this.connection == null,需要开始创建共享连接池
springboot:1.5.6
源码跟踪发现,第一次this.userPool为true,连接池已提前创建好
问题总结
springboot 1.5.6默认redis连接池是spring初始化bean时创建
springboot2.0.0以后默认redis连接池延迟加载实现,开始实际调用时才会创建连接池对象
使用junit测试简单测试系统性能要注意这方面的影响
以上是 springboot1.5.6和springboot2.X.Xredis连接池问题 的全部内容, 来源链接: utcz.com/z/515889.html