SpringBoot 2.0.6 連線 Redis 切換db踩坑記
阿新 • • 發佈:2018-12-17
專案中有一個小需求,在一個專案上不同的請求連線到同一個Redis 的不同的db上。
我使用的 SpringBoot是 2.0.6 RELEASE 版本的,按照網上說的方法,切換完db後(redisTemplete裡面打斷點可以看出來已經成功切換),還是會按原來的連線去查詢,導致資料查不到或者插入第一次連線到的庫。
在網上找了半天,找到的方法要麼報錯,要麼只顯示成功切換過去,不能使用。於是就看 LettuceConnectionFactory 的方法,看到了一個 resetConnection,於是想到可能是之前的連線未重置導致的,加上了這句話就好了。
1.3.x版本中是這樣的:
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(i);
stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
ValueOperations valueOperations = stringRedisTemplate.opsForValue();
這個是網上很容易搜到的方法,但是2.0+不好用。
2..0.6 版本以上用下面的這個方法 (如下是切換到 2 庫)
LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory(); jedisConnectionFactory.setDatabase(2); redisTemplate.setConnectionFactory(jedisConnectionFactory); jedisConnectionFactory.resetConnection();
問題終於得以解決。