springboot redis的db动态切换没有作用

springboot2.x以上版本默认采用lettuce,而SpringBoot1.5默认采用的是jed

//springboot2.x以上版本LettuceConnectionFactory connectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
        if (connectionFactory != null) {
            connectionFactory.setDatabase(切换到指定的db上);
            /**
             * 在重置db之后:connectionFactory.setDatabase(i);
             * 需要将链接刷新:connectionFactory.afterPropertiesSet();
             */
            connectionFactory.afterPropertiesSet();
            this.redisTemplate.setConnectionFactory(connectionFactory);
            connectionFactory.resetConnection();
        }
//springboot1.x
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
 jedisConnectionFactory.setDatabase(切换到指定的db上);
jedisConnectionFactory.afterPropertiesSet();
stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);

无法切换的原因:

  resetConnnection()方法只会释放Connection对象,RedisClient中的redisUrl对象的属性并未刷新,导致重新生成的Connection对象的DB值仍未改变,随意切换未生效,所以需要调用

connectionFactory.afterPropertiesSet();刷新RedisClient
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值