spring-boot-api-seedling
spring-boot-api-seedling copied to clipboard
jedisConnectionFactory 方法有问题?
主要问题: 导致redis的host设置无效?永远使用的本机redis?
参考 https://blog.csdn.net/dawn_after_dark/article/details/82112399
@tangguochang 具体问题是什么
@tangguochang 具体问题是什么
就是说我把redies装在别的机器(和api不在一台机器)上时,程序是跑不起来的,你的api永远使用的是127.0.0.1的redis
@tangguochang 在yml配置上改不生效吗
@tangguochang 在yml配置上改不生效吗
是的 不生效
我是这么解决的,修改com.package.core.config.RedisConfig部分内容如下:
//自动注入redis配置属性文件
@Autowired
private RedisProperties properties;
@Bean
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(properties.getJedis().getPool().getMaxIdle());
config.setMaxTotal(properties.getJedis().getPool().getMaxActive());
config.setMaxWaitMillis(properties.getJedis().getPool().getMaxWait().toMillis());
return config;
}
@Bean
public RedisConnectionFactory redisConnectionFactory(
@Qualifier(value = "jedisPoolConfig") final JedisPoolConfig jedisPoolConfig) {
// 单机版 jedis
final RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(properties.getHost());
redisStandaloneConfiguration.setPort(properties.getPort());
redisStandaloneConfiguration.setPassword(properties.getPassword());
redisStandaloneConfiguration.setDatabase(properties.getDatabase());
// 获得默认的连接池构造器
final JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpcb =
(JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)
JedisClientConfiguration.builder();
// 指定 jedisPoolConifig 来修改默认的连接池构造器
jpcb.poolConfig(jedisPoolConfig);
// 连接超时
jpcb.and().connectTimeout(Duration.ofMillis(0));
// 通过构造器来构造 jedis 客户端配置
final JedisClientConfiguration jedisClientConfiguration = jpcb.build();
// 单机配置 + 客户端配置 = jedis 连接工厂
return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
}
@thankuu 调试了下应该是配置文件中的redis属性没有成功注入,可以暂时这样解决,但还是希望有优雅点的方案
我把jedis版本 改成<jedis.version>2.9.3</jedis.version>就可以了。