java.util.concurrent.ExecutionException: redis.clients.jedis.exceptions.JedisDataException: ERR max number of clients reached

时间:2015-06-26 10:15:28

标签: java redis

I am trying to connect the redis database using jedis-client in the web application but after some day the application throwing an exception as below:

java.util.concurrent.ExecutionException: redis.clients.jedis.exceptions.JedisDataException: ERR max number of clients reached

I tried to figure out is it due to the redis not able to handle the connection or may be i have not close the redis connection.

//code snippet to connect redis
Jedis jedis = new Jedis("localhost");
jedis.connect();

I have not closed the connection as I was thinking the connection will get close by redis-server as it is idle. May be this will be cause.

1 个答案:

答案 0 :(得分:0)

每次要查询redis服务器时,您似乎都在打开连接。一段时间后,您连接了太多客户端,服务器无法接受新连接。

有几种选择:

断开空闲客户端服务器端

如果您希望redis服务器断开空闲客户端,您应该查看redis配置:     #客户端空闲N秒后关闭连接(0表示禁用)     超时0

请参阅reference redis conf。 您可能将此值设置为0.更改它并重新启动redis服务器应解决您的问题。

关闭连接客户端

致电

jedis.quit();

这将告诉您的服务器和客户端关闭连接。如果不需要保持连接,那就更优雅了。

使用连接池

如果您的redis应用程序中有多个客户端/线程,则应使用Jedis客户端中的连接池。它应该已经包含在您的依赖项中。

它将在需要时维护/重新创建连接。 您在需要连接时查询池,并在完成查询后将其返回给它(与jdbc池完全相同)。

以下是他们文档中的basic example