redis会自动重连吗?

3,995 阅读1分钟

为什么要关注这个问题?

因为生产环境之前出现过,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是否自动重连,结论也是不同连接池都会自动重连数据库。

代码

github.com/qingxiangOS…