以下是个便利贴文。
首先 , 先说说,这篇文章所要解决的问题是什么:
主要就是在,我们突然需要在关闭 redis的时候 进行 运行我们的 spring boot 的程序的 时候 , 这时候 都会突然报错 。 主要的 报错类型就基本就是 redis 未连接的报错类型。然后导致程序挂掉。
主要的原因便是:spring boot redis 的自动配置类(名字忘了,当然,你也可以想办法替换掉这个自动类,也是解决问题的方案之一)。这个类会强迫我们去生成一个对应的redisTemplate , 这个redisTemplate在创建的时候,会需要将 redisConnectionFactory set 进去 。 这时候,会触发 redisConnectionFactory 的 getConnect方法(有时候可能是另外一个获取 集群连接的接口) 。倘若你没有正常连接。程序就会报错,把你程序搞崩。因此,如果你想解决这个问题,最好就从这个 redisConnectionFactory 入手。
redisConnectionFactory 只是一个接口 , 官方目前( 应该说我目前 ) 使用的是 LutteConnectionFactory( 名字太长了记不住,差不多是这个名字) 这个对应的 实体类。我们可以直接继承这个类(我曾经尝试过implements redisConnectionFactory 接口 , 然后内核使用 Lutte ,但是不知道报什么错失败了, 可能是我哪里出了什么小问题 , 可以自己尝试一下),然后改写 , 只需要 getConnection 这个方法 , 使用 try 来 不让报错 下沉把程序搞崩溃了就行 , 下面写个小例子,不一定要按照我的方案来写
public RedisConnection getConnection(){
try{
return super.getConnection();
}catch( Exception ex ){
return null;
}
}
网友评论