为什么要关注这个问题?
因为生产环境之前出现过,redis挂了,但是有的项目不能自动重连redis,需要重启项目。
同事反映是jedis2.7不能自动重连,2.9可以。
是否会自动重连?
先说结论:jedis和lettuce都会。
如何测试?
lettuce
直接用工作的项目,只要springboot项目即可,springboot2.x版本默认就是用的lettuce。
然后,在本地启动redis服务器。
启动项目,正常读写redis。
关闭redis进程,报错:获取不到连接。
再次启动redis,读写redis正常。
jedis
springboot1.x版本默认就是用的jedis。
测试流程和上面一样。
参考
blog.didispace.com/springbootr…
测试不同版本的jedis
1.springboot版本和jedis版本对于关系
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- <version>1.2.3.RELEASE</version>--> <!-- jedis2.5-->
<version>1.3.0.RELEASE</version> <!-- jedis2.7-->
<!-- <version>1.5.0.RELEASE</version>--> <!-- jedis2.9-->
</parent>
2.引入jedis.jar
<!-- jedis2.5/2.7-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<!-- jedis2.9-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-data-redis</artifactId>-->
<!-- </dependency>-->
注意:不同springboot版本,jedis坐标不一样。
总结
1.redis客户端都会自动重连。
2.哪怕是先启动项目,后启动redis,都可以自动重连。
3.redis集群,也会自动重连。
4.不同redis客户端的不同版本,都会自动重连。
5.公司同事测试了数据库oracle是否自动重连,结论也是不同连接池都会自动重连数据库。