1.redis配置
spring.redis.host = xxx.xx.x.xx
spring.redis.port = 6379
spring.redis.password = 123456
spring.redis.database = 15
spring.redis.database2 = 2
spring.redis.jedis.pool.max-idle = 8
spring.redis.jedis.pool.min-idle = 0
spring.redis.jedis.pool.max-active = 8
spring.redis.jedis.pool.max-wait = 5000
2.依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
3.RedisConfig
@Configuration
public class RedisConfig {
//1.39 2号库
@Value("${spring.redis.database2}")
private int db2;
//1.39 15号库
@Value("${spring.redis.database}")
private int db1;
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.jedis.pool.max-active}")
private int maxActive;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.min-idle}")
private int minIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private int maxWait;
@Bean
public GenericObjectPoolConfig getPoolConfig(){
// 配置redis连接池
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
poolConfig.setMaxTotal(maxActive);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMinIdle(minIdle);
poolConfig.setMaxWaitMillis(maxWait);
return poolConfig;
}
//15号库
@Bean(name = "strRedisTemplate")
public RedisTemplate<Serializable, Object> redisTemplate(){
RedisTemplate<Serializable, Object> template = new RedisTemplate<Serializable, Object>();
template.setConnectionFactory(getRedisConnectionFactory(db1));
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(stringRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(stringRedisSerializer);
// template.afterPropertiesSet();
return template;
}
//2号库
@Bean(name = "strRedisTemplate2")
public RedisTemplate<Serializable, Object> redisTemplate2(){
RedisTemplate<Serializable, Object> template = new RedisTemplate<Serializable, Object>();
template.setConnectionFactory(getRedisConnectionFactory(db2));
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(stringRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(stringRedisSerializer);
// template.afterPropertiesSet();
return template;
}
private RedisConnectionFactory getRedisConnectionFactory(int database) {
// 构建工厂对象
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName(host);
config.setPort(port);
config.setPassword(RedisPassword.of(password));
LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
.poolConfig(getPoolConfig())
.build();
LettuceConnectionFactory factory = new LettuceConnectionFactory(config, clientConfig);
// 设置使用的redis数据库
factory.setDatabase(database);
// 重新初始化工厂
factory.afterPropertiesSet();
return factory;
}
}
4.使用
@Resource(name = "strRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
@Resource(name = "strRedisTemplate2")
private RedisTemplate<String, String> redisTemplate2;
5.参考
配置redis多数据源参考