redis动态切换库


 

 
 

 

 

问题:

平常使用的时候,redis的db是写死的,如何去动态的修改呢?

 

 

解决办法

  • 新建一个RedisDBChangeUtil.java
1
2
@Component
public  class  RedisDBChangeUtil {
1
2
3
4
5
6
7
8
9
10
11
12
     @Autowired
     private  StringRedisTemplate redisTemplate;
 
     public  void  setDataBase( int  num) {
         LettuceConnectionFactory connectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
         if  (connectionFactory !=  null  && num != connectionFactory.getDatabase()) {
             connectionFactory.setDatabase(num);
             this .redisTemplate.setConnectionFactory(connectionFactory);
             connectionFactory.resetConnection();
         }
     }
}

需要注意的地方:

LettuceConnectionFactory 是 在springboot 2.X版本使用,

但是springboot 版本 spring-boot-starter-data-redis 的版本对这个redis切换db非常不友好!

测试一下:(版本:2.1.3.RELEASE)

  • 如果不是以上的版本的话,切换数据库是没有效果的,数据都会插入到默认的db0中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RestController
@RequestMapping ( "/" )
public  class  RedisStringController {
     <br>     @Resource
     private  StringRedisTemplate stringRedisTemplate;
 
     @Resource
     private  RedisDBChangeUtil redisDBChangeUtil;
 
     @PostMapping ( "/changeDb" )
     public  String changeDb(){
 
        //默认的插入
         stringRedisTemplate.opsForValue().set( "name" , "db0" );
 
         //插入db1
         redisDBChangeUtil.setDataBase( 1 );
         stringRedisTemplate.opsForValue().set( "name1" , "db1" );
 
         //插入db2
         redisDBChangeUtil.setDataBase( 2 );
         stringRedisTemplate.opsForValue().set( "name2" , "db2" );
 
         return   "ok" ;
     }
}

  

 

 

 

_


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM