java - 线程 "main"中出现异常 redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException : No reachable node in cluster

标签 java redis jedis redis-cluster

我正在尝试使用 java 连接到安装在 Linux 机器中的 Redis 集群来存储 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.getConnectionFromSlot(JedisSlotBasedConnectionHandler.java:86) 在 redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:102) 在 redis.clients.jedis.JedisClusterCommand.run(JedisClusterCommand.java:25) 在 redis.clients.jedis.JedisCluster.hmset(JedisCluster.java:513) 在 com.connection.jedisclient.Test.main(Test.java:25)

我可以在集群中手动设置它,如下所示:

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

确定

127.0.0.1:6379> hget 用户 jsontest

“{\“测试1\”:\“数据1\”,\“测试2\”:42}”

最佳答案

尝试使用 localhost 或 127.0.0.1 作为主机进行连接

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);



}

关于java - 线程 "main"中出现异常 redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException : No reachable node in cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60190091/

相关文章:

redis - 为什么 Redis key 不会过期?

spring - 在 Redis 中使用 opsForHash.scan() 时出现 ClassCastException

java - 在 Play 框架中调用 Web 服务抛出执行异常

redis - 确定给定哈希槽的主机的运行时复杂度是多少?

ruby - 如何将此 SQL 结构化为 redis 数据库

javascript - 如何模拟 Node redis模块的createClient方法

Redis 迭代关键组

java - 如何安装 Jar?

java - 具有多个带有 action 属性的提交标签的 Struts 2.3 表单不起作用

java - 以天为单位计算持续时间 - 无法解析的日期