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

回到顶部