我是靠谱客的博主 阳光流沙,这篇文章主要介绍SpringBoot切换Redis的DB踩坑,现在分享给大家,希望可以做个参考。

先简单记录一下解决方案,以后有空详细补下断点过程。

我用的版本如下

复制代码
1
2
3
<groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.2.0.RELEASE</version>

有一个需求需要切换DB写入数据,然后在网上找到的大多数解决方案如下:

LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
lettuceConnectionFactory.setDatabase(2);
redisTemplate.setConnectionFactory(lettuceConnectionFactory );
lettuceConnectionFactory.resetConnection();

使用后发现不起作用,于是断点追根溯源,发现原来resetConnnection()方法只会释放Connection对象,RedisClient中的redisUrl对象的属性并未刷新,导致重新生成的Connection对象的DB值仍未改变,随意切换未生效。

随后寻找刷新RedisClient的方法,最终解决方案如下:

lettuceConnectionFactory.afterPropertiesSet(),在最后调用此方法即可刷新RedisClient,刷新时会自动取lettuceConnectionFactory内部属性的DB值填充,DB切换成功。

 

最后

以上就是阳光流沙最近收集整理的关于SpringBoot切换Redis的DB踩坑的全部内容,更多相关SpringBoot切换Redis内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部