Redis连接失败本地服务器无法建立连接(redis本地不能连接)

Redis连接失败:本地服务器无法建立连接

创新互联-专业网站定制、快速模板网站建设、高性价比习水网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式习水网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖习水地区。费用合理售后完善,10余年实体公司更值得信赖。

最近在开发过程中遇到了一个Redis连接失败的问题,日志中出现了以下信息:本地服务器无法建立连接。

经过排查,发现问题出在Redis连接的配置上。

我检查了Redis服务器的IP和端口号是否正确,以及Redis的运行状态是否正常,确认无误后,我开始检查了本地的Redis连接配置。

一开始我用的是spring-data-redis,其中配置了以下参数:

spring.redis.host=localhost
spring.redis.password=xxxx
spring.redis.port=6379

在应用启动时,控制台没有发现异常信息,应用启动成功。然而,当应用进行Redis读写操作时,依旧出现了连接失败的情况。

这时,我想到了可能是Redis客户端版本的问题,于是我升级了Redis客户端版本,也更新了spring-boot-starter-data-redis的版本,但问题还是无法解决。

随后,我开始检查Redis连接池的配置。连接池规定了一些连接池相关的配置参数,例如:

spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-wt=-1ms

当我检查了这些参数之后,很快就找到了问题。由于max-active和max-idle参数的值相同,导致连接池中出现了死锁,从而出现了“本地服务器无法建立连接”的错误。

经过上述排查,我成功解决了Redis连接失败的问题,调整连接池配置参数后,应用可以正常进行Redis读写操作。

总结:

1.检查Redis服务器的IP和端口号,以及Redis的运行状态是否正常;

2.检查Redis客户端版本是否与服务端版本匹配;

3.检查连接池配置参数是否正确,特别是max-active和max-idle参数是否有死锁情况。

代码示例:

1.Redis客户端连接配置:

@Configuration
PUBLIC class RedisConfig {

@Value("${spring.redis.host}")
private string hostName;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.timeout}")
private int timeout;
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
template.setKEYSerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
template.afterPropertiesSet();
return template;
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(8);
poolConfig.setMaxTotal(8);
poolConfig.setMinIdle(0);
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig);
jedisConnectionFactory.setHostName(hostName);
jedisConnectionFactory.setPassword(password);
jedisConnectionFactory.setPort(port);
jedisConnectionFactory.setTimeout(timeout);
return jedisConnectionFactory;
}
}

2.使用RedisTemplate读写操作:

@Service
public class RedisServiceImpl implements RedisService {

@Autowired
private RedisTemplate redisTemplate;
@Override
public void set(String key, Object value, long time) {
ValueOperations operations = redisTemplate.opsForValue();
operations.set(key, value, time, TimeUnit.SECONDS);
}
@Override
public Object get(String key) {
ValueOperations operations = redisTemplate.opsForValue();
return operations.get(key);
}
@Override
public boolean delete(String key) {
return redisTemplate.delete(key);
}
@Override
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
}

成都服务器托管选创新互联,先上架开通再付费。
创新互联(www.cdcxhl.com)专业-网站建设,软件开发老牌服务商!微信小程序开发,APP开发,网站制作,网站营销推广服务众多企业。电话:028-86922220

分享题目:Redis连接失败本地服务器无法建立连接(redis本地不能连接)
文章地址:http://www.stwzsj.com/qtweb/news25/8525.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联