gpt4 book ai didi

java.util.concurrent.ExecutionException : redis. clients.jedis.exceptions.JedisDataException:ERR 达到最大客户端数

转载 作者:可可西里 更新时间:2023-11-01 11:37:15 24 4
gpt4 key购买 nike

我正在尝试在 Web 应用程序中使用 jedis-client 连接 redis 数据库,但有一天应用程序抛出如下异常:

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

我试图弄清楚是由于 redis 无法处理连接还是我没有关闭 redis 连接。

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

我没有关闭连接,因为我认为连接会在 redis-server 空闲时关闭。可能这就是原因。

最佳答案

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

有几个选项:

断开空闲客户端服务器端

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

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

关闭连接客户端

只要打电话

jedis.quit();

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

使用连接池

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

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

这是 basic example来自他们的文档。

关于java.util.concurrent.ExecutionException : redis. clients.jedis.exceptions.JedisDataException:ERR 达到最大客户端数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com