我正在尝试使用 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/