我有这个redis缓存,每天大约要设置100次值。在完美地运行了几天后,我得到了连接错误“最大数量的客户达到”。在重新启动服务器后,它现在工作正常,但是我想在将来避免这个问题。
在我看来,一旦我创建了一个客户端对象,它就会留在连接池中,并且永远不会被终止或删除。
以下是我的代码
r = redis.StrictRedis(host= host, port=6379, db=0)
r.set(key_name, data)这是在一个迭代中。而且,我正在使用python中的redis。
发布于 2018-06-18 21:47:47
我认为你的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)发布于 2018-06-18 21:39:13
如果您不关闭客户端连接,它将永远保持打开状态。
https://redis.io/topics/clients
客户端超时默认情况下,如果客户端空闲很多秒,Redis的最新版本不会关闭与客户端的连接:连接将永远保持打开。
但是,如果您不喜欢此行为,则可以配置超时,以便如果客户端的空闲时间超过指定的秒数,则客户端连接将关闭。
您可以通过redis.conf或简单地使用CONFIG SET timeout配置此限制。
发布于 2021-09-10 04:12:25
这个问题有一个临时的解决方案。设置客户端连接的超时
在客户端空闲N秒后关闭连接(0表示禁用)
超时%0
如果我们设置超时120,它将关闭所有空闲连接,我们可以解决此错误配置设置超时120
登录到redis cli后

https://stackoverflow.com/questions/50910697
复制相似问题