欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis和jedis搭建过程中遇到的问题

程序员文章站 2024-02-27 22:58:57
...

一、异常

警告: Cannot get master address from sentinel running @ 127.0.0.1:26379. Reason: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect. Trying next one.
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: All sentinels down, cannot determine where is mymaster master is running...无法从哨兵运行中获得主地址

可能导致以上异常原因:

1.ip(可能是内网,外网这个要分清楚)不对。也可能是配置文件中bind未注释。

2.redis未启动。

3.所有的哨兵,不能确是mymaster主运行。

二、连接池连不上

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
看了很多网上的解决办法,可能是

1.bind 127.0.0.1 未注释。

2.ip端口ping通 (以下是通的状态)redis和jedis搭建过程中遇到的问题redis和jedis搭建过程中遇到的问题redis和jedis搭建过程中遇到的问题redis和jedis搭建过程中遇到的问题

redis 127.0.0.1:6388> ping
PONG
redis 127.0.0.1:6388> 

3.防火墙ip、redis版本问题、各种参数设置

4.密码

我测试时是密码有问题。

public static void main(String[] args) {  
	        Set<String> sentinels = new HashSet<String>();  
	       String hostAndPort1 = "111.13.56.194:26379";  
	        //String hostAndPort1 = "192.168.1.104:26379";  
	        sentinels.add(hostAndPort1);  
	        String clusterName = "mymaster6379" ; 
	        String password = "123456" //此处添加密码
	        // 建立连接池配置参数
	        JedisPoolConfig config = new JedisPoolConfig();
	        config.setMaxIdle(50);
	        config.setMinIdle(8);//设置最小空闲数
	        config.setMaxWaitMillis(10000);
	        config.setTestOnBorrow(true);
	        config.setTestOnReturn(true);
	        //Idle时进行连接扫描
	        config.setTestWhileIdle(true);
	        //表示idle object evitor两次扫描之间要sleep的毫秒数
	        config.setTimeBetweenEvictionRunsMillis(30000);
	        //表示idle object evitor每次扫描的最多的对象数
	        config.setNumTestsPerEvictionRun(10);
	        //表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
	        config.setMinEvictableIdleTimeMillis(60000);
	        JedisSentinelPool redisSentinelJedisPool = new JedisSentinelPool(clusterName,sentinels,config,password);  
	        Jedis jedis = null;  
	        try {  
	            jedis = redisSentinelJedisPool.getResource();  
	            jedis.set("key", "aaa");  
	            System.out.println(jedis.get("key"));  
	            System.out.println(jedis.get("bbb"));  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        } finally {  
	        	//redisSentinelJedisPool.returnResource(jedis);
	            jedis.close();  
	        }  
	        redisSentinelJedisPool.close();  
	    }  


 注意:

master(主)需要设置密码,否则会抛出Could not get a resource from the pool
requirepass 123456


master(主)设置了密码,slave(从)需要验证,否则主从配置不生效,主从不同步。

masterauth 123456

 

上一篇: Logback error

下一篇: