redis:达到最大客户端数

新手上路,请多包涵

我有这个 redis 缓存,其中值每天设置大约 100 次。完美运行几天后,我收到连接错误“已达到最大客户端数”。重新启动服务器后,它现在工作正常,但我想在将来避免这个问题。

在我看来,一旦我创建了一个客户端对象,它就会保留在连接池中,并且永远不会被杀死或删除。

这是我的代码

r = redis.StrictRedis(host= host, port=6379, db=0)
r.set(key_name, data)

这是在一个迭代中。而且,我在 python 中使用 redis。

原文由 sjishan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 504
2 个回答

我认为你的 redis 连接在每个请求上实例化,导致它达到最大连接限制,你应该将你的 redis 实例保持在全局中,这将共享同一个 redis 实例,这不应该再导致太多连接。 redis 实例将有自己的连接池,您可以通过将 max_connections 参数设置为 redis.ConnectionPool 来限制连接数。如果设置了 max_connections,则当达到池的限制时,此对象会引发 redis.ConnectionError。

 POOL = redis.ConnectionPool(host= host, port=6379, db=0)
r = redis.StrictRedis(connection_pool=POOL)

原文由 Anand Tripathi 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您不关闭客户端连接,它将永远保持打开状态。

https://redis.io/topics/clients

客户端超时默认情况下,如果客户端空闲数秒,Redis 的最新版本不会关闭与客户端的连接:连接将永远保持打开状态。

但是,如果您不喜欢这种行为,您可以配置一个超时时间,这样如果客户端空闲时间超过指定的秒数,客户端连接将被关闭。

您可以通过 redis.conf 或简单地使用 CONFIG SET timeout 配置此限制。

原文由 Jordan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏