
项目上线后,发现B服务一直取不到A服务的缓存,最后发现是两个服务用的库不一样。
解决方案@Configuration
public class KeyStringRedisAutoConfiguration {
@Value("${reids.database2}")
private int db2;
@Value("${redis.host}")
private String host;
@Value("${redis.port}")
private int port;
@Value("${redis.password}")
private String password;
@Value("${spring.jedis.pool.max-active}")
private int maxActive;
@Value("${spring.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.jedis.pool.min-idle}")
private int minIdle;
@Value("${spring.jedis.pool.timeout}")
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;
}
@Bean("DB2RedisTemplate")
public RedisTemplate creatRedisTemplate() {
RedisTemplate redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(getRedisConnectionFactory(db2));
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer( new JdkSerializationRedisSerializer());
// redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}
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;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)