概述
查看你Redis连接使用的是那种,不配置的话2.0之后默认使用lettuce,如果使用的Jedis,则底下代码相应的地方也要更改成JedisConnectionFactory
//设置之前判断一下db是不是一样,一样的话就跳过
int dbIndex = 1;
LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();//默认连接使用的是Lettuce,共享底层一个连接,同步阻塞执行(可配置成线程池)
if(lettuceConnectionFactory!=null&&dbIndex!=lettuceConnectionFactory.getDatabase() ){
lettuceConnectionFactory.setDatabase(dbIndex);
lettuceConnectionFactory.resetConnection();
lettuceConnectionFactory.afterPropertiesSet()
}
需要注意的是,通过这样的方式更改的是全局的db(假设你RedisTemplate使用是默认创建的LettuceConnectionFactory ),所有使用该LettuceConnectionFactory 创建的RedisTemplate都会同步更改,所以如果你想同时使用两个db且互不影响或者比较频繁的改变(改变时会释放和重建连接,理论上会有性能损失,未实际验证),最好要自己建立LettuceConnectionFactory ,每个db对应相应的LettuceConnectionFactory ,相应的RedisTemplate使用对应的LettuceConnectionFactory 创建即可;另外可以专门建立一个LettuceConnectionFactory 来做切换后读取写入,其他地方不用这个LettuceConnectionFactory 也可以。
注:上面的方法针对单机模式,集群等情况未知。
最后
以上就是缥缈白猫为你收集整理的springboot 2.5.2 redis 动态切换db的全部内容,希望文章能够帮你解决springboot 2.5.2 redis 动态切换db所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复