问题描述:
今天在我的一个Flink项目中,需要用到redisCluster连接redis集群。我的项目是用maven进行自动化构建,原先的maven依赖长这样:
<!-- redis -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-redis_2.11</artifactId>
<version>1.1.5</version>
</dependency>
Redis连接部分的代码是这样子滴:
@Override
public void open(int taskNumber, int numTasks) throws IOException {
jedisCluster = new JedisCluster(hostSet, 6000, 10, poolConfig);
}
项目启动的时候发生了异常:
java.lang.NumberFormatException: For input string 7005@17005
这是因为maven构建时 flink-connector-redis 包中引用了redis.clients.2.8.0版本,和服务端redis集群使用的redis版本不一致。redis服务器的版本为:
[root@dev-test-7 ~]# docker run -it redis redis-server --version
Redis server v=6.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=d5d470262d47f1a0
解决办法:
把redis client依赖的版本从2.8.0改到2.9.0就可以了。
<!-- redis -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-redis_2.11</artifactId>
<version>1.1.5</version>
<exclusions>
<exclusion>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>