解决方案参考链接:
参考链接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没有清理问题)
重要提示!重要提示!重要提示!
- 使用这个方式之后,会保留最后一次的db号,所以每次使用都需要根据实际需求设置为自己需要的db号
- 使用这个方式后,由于关闭了连接共享,高并发下可能会造成连接不够用的问题,目前尚未对该问题进行验证