一、前言
關於redis5.0的集群模式下,通過客戶端測試代碼調試報"Exception in thread "main" java.lang.NumberFormatException: For input string: "7003@17003..7002@17002"等異常,詳情日志如下>>
Exception in thread "main" java.lang.NumberFormatException: For input string: "7003@17003" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.valueOf(Integer.java:582) at redis.clients.util.ClusterNodeInformationParser.getHostAndPortFromNodeLine(ClusterNodeInformationParser.java:40) at redis.clients.util.ClusterNodeInformationParser.parse(ClusterNodeInformationParser.java:14) at redis.clients.jedis.JedisClusterInfoCache.discoverClusterNodesAndSlots(JedisClusterInfoCache.java:40) at redis.clients.jedis.JedisClusterConnectionHandler.initializeSlotsCache(JedisClusterConnectionHandler.java:50) at redis.clients.jedis.JedisClusterConnectionHandler.<init>(JedisClusterConnectionHandler.java:31) at redis.clients.jedis.JedisSlotBasedConnectionHandler.<init>(JedisSlotBasedConnectionHandler.java:17) at redis.clients.jedis.JedisCluster.<init>(JedisCluster.java:51) at redis.clients.jedis.JedisCluster.<init>(JedisCluster.java:35) at redis.clients.jedis.JedisCluster.<init>(JedisCluster.java:26) at redis.clients.jedis.JedisCluster.<init>(JedisCluster.java:30) at com.xwood.redis.cluster.JedisClusterTest.main(JedisClusterTest.java:23)
客戶端代碼示例如下:
package com.xwood.redis.cluster; import java.util.HashSet; import java.util.Set; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; public class JedisClusterTest { public static void main(String[] args) { Set<HostAndPort> nodes = new HashSet<HostAndPort>(); nodes.add(new HostAndPort("192.168.1.204", 7001)); nodes.add(new HostAndPort("192.168.1.204", 7002)); nodes.add(new HostAndPort("192.168.1.204", 7003)); nodes.add(new HostAndPort("192.168.1.204", 7004)); nodes.add(new HostAndPort("192.168.1.204", 7005)); nodes.add(new HostAndPort("192.168.1.204", 7006)); JedisCluster cluster = new JedisCluster(nodes); cluster.set("key424", "123456"); String result = cluster.get("key424"); System.out.println("cluster=========>"+result); cluster.close(); } }
二、解決方法
因jedis-2.7.0.jar版本問題,改為jedis-3.0.1.jar版本就能解決問題,因為redis5.0版本需要客戶端相應高版本驅動包