redis动态切换库
问题:
平常使用的时候,redis的db是写死的,如何去动态的修改呢?
解决办法
- 新建一个RedisDBChangeUtil.java
|
1
2
|
@Componentpublic 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"; }} |
_


浙公网安备 33010602011771号