运行期间动态切换Redis数据库
public void selectDB(int db) {
LettuceConnectionFactory factory =
(LettuceConnectionFactory) redisTemplate.getConnectionFactory();
factory.setDatabase(db);
factory.resetConnection();
redisTemplate.setConnectionFactory(factory);
}
注意几点问题
1.setDatabase之后必须reset否则无法切换,因为连接池连接初始化了,必须reset
2.并发存在问题,setDatabase是线程不安全的,存在脏数据,请加锁
3.LettuceConnectionFactory不一定是这样类接受引用,根据使用不同的连接池不同而不同