Spring boot 2.x 切换redis的db号不管用解决办法

米斯特程序猿 2020年11月20日 515次浏览

解决方案参考链接:
参考链接1
参考链接2
参考链接3
最近将项目的spring cloud 从 1.5 升级为 2.2.11 发现切换redis db 号不起作用,然后度娘、谷歌了好长时间,网上99% 解决办法都是如下配置

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

最后经过测试只有【参考链接1】的这个好用

-- 最终写法

LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(2);
redisTemplate.setConnectionFactory(jedisConnectionFactory);
jedisConnectionFactory.resetConnection();
// 多了这个一句
jedisConnectionFactory.afterPropertiesSet();

补上一张图(参考链接1上说的client没有清理问题)
image.png

重要提示!重要提示!重要提示!

  • 使用这个方式之后,会保留最后一次的db号,所以每次使用都需要根据实际需求设置为自己需要的db号
  • 使用这个方式后,由于关闭了连接共享,高并发下可能会造成连接不够用的问题,目前尚未对该问题进行验证