springboot redis的db動態切換沒有作用


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

//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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM