Flink 重置 Redis 连接

Redis connection reset in Flink

我有一个 class 扩展了我的 Flink 流作业中的 RichFlatmapFunction。我在open()方法中创建了一个Jedis实例,在close()方法中关闭(jedis.close()),这样所有经过转换的记录都使用相同的Jedis 实例。这种方法之前没有给我任何连接错误。但是在最近的工作中运行,我得到了错误,

"redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Connection reset".

这可能是因为我对所有记录使用相同的 jedis 实例(保持打开状态)?创建实例时我没有设置任何超时。所以超时也是默认值。

如果我使用 JedisPool 来检索和关闭每条记录的 Jedis 实例,是否可以避免此错误?

连接重置发生在网络级别的服务器和客户端连接之间存在任何中断的情况下,即任何网络丢失、防火墙或应用程序崩溃或有意关闭

也有可能因为空闲超时而有意关闭

现在开始使用 JedisPool,使用连接池是多线程环境中的最佳实践,因为重用连接是高效的。所以请尝试以适当的配置使用它们