Redis连接中断后线程一直卡着,无法自动重连,此时需要手动重连。
先说我遇到的问题,我项目是Springboot+redis,客户端使用的jedis。对Redis进行大批量的压测遇到了这个问题,为了减少程序对Redis的连接IO,使用了pipeline机制对redis进行大批量写入执行测试。一开始还好好的,随着一边写入一边读取,然后又执行数据清理操作,此时redistemplate无法使用,具体现象是卡着不往下执行,如redistemplate.set。
解决方式:
需要执行:
JedisConnectionFactory jedisFactory = (JedisConnectionFactory) redisTemplate.getConnectionFactory();
jedisFactory.afterPropertiesSet();
主要是方法:afterPropertiesSet(),他会重新初始化和实例化redis连接。执行完后redistemplate又可以继续使用了,同理,若程序中使用redis时断线无法重连也可以重新初始化一次。