java 通过redisTemplate 修改默认指定的库
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
connection.select(0);
String configCacheKey = "tRylSitePlanConfig:".concat(config.getSiteCode()).concat(config.getPlanCode());
connection.set(configCacheKey.getBytes("utf-8"), JSONObject.toJSONString(config, SerializerFeature.WriteMapNullValue).getBytes("utf-8"));
可能出现的问题
Selecting a new database not supported due to shared connection. Use separate ConnectionFactorys to work with multiple databases
原因是 spring boot 2.x 默认是用的是 LettuceConnection , 这个是使用共享连接的,所以会出现上面的错误。
解决办法
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisCacheAutoConfiguration {
@Bean
public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
redisConnectionFactory.setShareNativeConnection(false);
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}