springboot整合redis修改分区
问题由来
最近使用springboot整合redis,一个系统动态数据源连接不同数据库,缓存使用的redis,那么就需要将不同数据库的数据缓存到redis不同的分区,也就是不同的库中。
老版解决
这里的老版指的是2.0之前的,我使用的1.5.9是ok的。
redis的配置类这里就不贴了,网上很多。
1.使用JedisConnectionFactory
修改
@Autowired
JedisConnectionFactory jedisConnectionFactory;
jedisConnectionFactory.setDatabase(database);
2.使用redisTemplate
修改
redisTemplate.getConnectionFactory().getConnection().select(database);
以上两种方式不需要再redis配置类中特意添加bean
新版解决
这里的新版指的是2.0之后的,我用的是2.0.3
redis配置类中需要添加以下bean
@Bean
RedisStandaloneConfiguration redisStandaloneConfiguration() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName("localhost");
redisStandaloneConfiguration.setPort(6379);
redisStandaloneConfiguration.setDatabase(0);
return redisStandaloneConfiguration;
}
@Bean
JedisConnectionFactory jedisConnectionFactory(RedisStandaloneConfiguration redisStandaloneConfiguration) {
//redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
jedisClientConfiguration.connectTimeout(Duration.ofMillis(0));// connection timeout
JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration,
jedisClientConfiguration.build());
return factory;
}
使用RedisStandaloneConfiguration
修改
@Autowired
RedisStandaloneConfiguration redisStandaloneConfiguration;
redisStandaloneConfiguration.setDatabase(database);