1. 程式人生 > >SpringBoot 2.0.6 連線 Redis 切換db踩坑記

SpringBoot 2.0.6 連線 Redis 切換db踩坑記

專案中有一個小需求,在一個專案上不同的請求連線到同一個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();

問題終於得以解決。