直接上代码
配置文件就不上了自己百度一下
记得更换自己的序列化方式,看清楚1.x 的版本一般用的是 jdk 的
JdkSerializationRedisSerializer 序列化方式,我这是虽然是2.x的 但是兼容老项目 所以也采用的jdk
一般来说2.x的redis 用的是jackson2JsonRedisSerializer 序列化方式 我把代码也贴一下
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
下面是正题 , redis 配置多链接的代码,因为在单链接中切换库在并发中会出现问题,所以还是配置多个RedisTemplate 各管各的
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@Value("${spring.redis.password}")
private String redisAuth;
@Value("${spring.redis.jedis.pool.max-active}")
private int maxActive = 20;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle = 10;
@Bean("redisTlbDb")
public RedisTemplate<String,?> redisTlbDb() {
return setRedisTemplate(0);
}
@Bean("redisUserDb")
public RedisTemplate<String,?> redisUserDb() {
return setRedisTemplate(1);
}
@Bean("redisMessageDb")
public RedisTemplate<String,?> redisMessageDb() {
return setRedisTemplate(15);
}
public RedisTemplate<String, Object> setRedisTemplate(int redisDb) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
RedisConnectionFactory factory=connectionFactory(redisDb);
template.setConnectionFactory(factory);
template=setSerializer(template);
return template;
}
public RedisTemplate setSerializer(RedisTemplate<String, Object> template){
JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setKeySerializer(stringRedisSerializer);
template.setValueSerializer(jdkSerializationRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setHashValueSerializer(jdkSerializationRedisSerializer);
template.afterPropertiesSet();
return template;
}
public RedisConnectionFactory connectionFactory(int redisDb) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(maxActive);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(false);
poolConfig.setTestWhileIdle(true);
JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().usePooling().poolConfig(poolConfig).and().build();
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setDatabase(redisDb);
redisStandaloneConfiguration.setPort(redisPort);
redisStandaloneConfiguration.setPassword(RedisPassword.of(redisAuth));
redisStandaloneConfiguration.setHostName(redisHost);
return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
}