Исключение в потоке "main" redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: нет достижимого узла в кластере - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь подключиться к кластеру Redis, который установлен в поле linux, используя java для хранения строки JSON.

Код:

public JedisCluster getRedisCluster(){


    Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
    jedisClusterNode.add(new HostAndPort("redis-test-cluster1", 6379));

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxTotal(10);
    jedisPoolConfig.setMaxIdle(10);
    jedisPoolConfig.setMaxWaitMillis(10000);
   jedisPoolConfig.setTestOnBorrow(true); 
    JedisCluster jedisCluster = new JedisCluster(jedisClusterNode, 10000, 1,10, "passwordString",jedisPoolConfig);
    return jedisCluster;
}



    public static void main(String[] args) {
    String jsonString = new String("{\"Test1\": \"data1\", \"Test2\": 42}");

    Map<String,String> map = new HashMap<String,String>();
    map.put("testjson",jsonString);

    JedisCluster jedisCluster = new RedisJavaClient().getRedisCluster();
    jedisCluster.hmset("idtest",map);

     String value = jedisCluster.hget("testjson","idtest");
     System.out.println("value passed : "+value);



}

И я получаю следующее исключение:

Исключение в потоке "main" redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: Нет достижимого узла в кластере по адресу redis.clients.jedis.JedisSlotBasedConnectionHandler.getConnection (JedisSlotBasedConnectionHandler. java: 69) по адресу redis.clients.jedis.JedisSlotBasedConnectionHandler.getConnectionFromSet.jisisedjisClient_Control_Signed.Ru (JedisClusterCommand. java: 102) на redis.clients.jedis.JedisClusterCommand.run (JedisClusterCommand. java: 25) на redis.clients.jedis.JedisCluster.hmset (JedisCluster. java 51): 51 connection.jedisclient.Test.main (Test. java: 25)

Я могу установить его вручную в кластере, как показано ниже:

127.0.0.1: 6379> hmset users jsontest "{\" Test1 \ ": \" data1 \ ", \" Test2 \ ": 42}"

OK

127.0.0.1: 6379> hget users jsontest

"{\" Test1 \ ": \" data1 \ ", \" Test 2 \ ": 42}"

1 Ответ

0 голосов
/ 12 февраля 2020

Попробуйте подключить то же самое, используя localhost или 127.0.0.1, как HOST

public JedisCluster getRedisCluster(){


Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6379));

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMaxWaitMillis(10000);
jedisPoolConfig.setTestOnBorrow(true); 
JedisCluster jedisCluster = new JedisCluster(jedisClusterNode, 10000, 1,10, "passwordString",jedisPoolConfig);
return jedisCluster;
}



public static void main(String[] args) {
String jsonString = new String("{\"Test1\": \"data1\", \"Test2\": 42}");

Map<String,String> map = new HashMap<String,String>();
map.put("testjson",jsonString);

JedisCluster jedisCluster = new RedisJavaClient().getRedisCluster();
jedisCluster.hmset("idtest",map);

 String value = jedisCluster.hget("testjson","idtest");
 System.out.println("value passed : "+value);



}
...