如何杀死Redis上Node打开的空闲客户端?
How to kill idle clients opened by Node on Redis?
我很难自动关闭 Redis 的客户端连接。这肯定是 redis
包的问题:
(https://www.npmjs.com/package/redis)
Redis 将保持连接处于活动状态,直到您关闭它们或达到默认为无限的超时。
我知道这个:
how do I kill idle redis clients
甚至在继续阅读之前,我尝试通过 .conf 文件和命令行设置 timeout
配置,但 none 有效。
实际发生的事情很奇怪:
如果我运行 CLIENT LIST
N秒后:
- 相同数量的空闲连接仍然存在
- 客户端'idle'信息从0重新启动(例如,如果我设置10秒超时,11秒后
idle
信息为1)。
- 地址改变了。端口号在创建新连接时会发生变化,以免丢失该客户端。
- 客户端实际上是附加到 Node 上的。它似乎是一个新的节点进程。如果我保持节点应用程序正常运行,连接就不会中断。如果我关闭应用程序,它创建的所有连接都会关闭。所以
redis
模块可能是 'restarting' 连接。
关于我不应该强迫被杀死的客户的 'resurection' 有什么想法吗?
Obs:我知道我可以关闭客户端与 'quit()' 的连接,但我必须确保它会在一段时间后摆脱任何未被应用程序关闭的空闲客户端。
为了防止节点 redis
重新连接,我将密钥 retry_strategy
传递给了 createClient。
它必须是一个返回 false
或抛出 Error
的函数
我很难自动关闭 Redis 的客户端连接。这肯定是 redis
包的问题:
(https://www.npmjs.com/package/redis)
Redis 将保持连接处于活动状态,直到您关闭它们或达到默认为无限的超时。
我知道这个:
how do I kill idle redis clients
甚至在继续阅读之前,我尝试通过 .conf 文件和命令行设置 timeout
配置,但 none 有效。
实际发生的事情很奇怪:
如果我运行 CLIENT LIST
N秒后:
- 相同数量的空闲连接仍然存在
- 客户端'idle'信息从0重新启动(例如,如果我设置10秒超时,11秒后
idle
信息为1)。 - 地址改变了。端口号在创建新连接时会发生变化,以免丢失该客户端。
- 客户端实际上是附加到 Node 上的。它似乎是一个新的节点进程。如果我保持节点应用程序正常运行,连接就不会中断。如果我关闭应用程序,它创建的所有连接都会关闭。所以
redis
模块可能是 'restarting' 连接。
关于我不应该强迫被杀死的客户的 'resurection' 有什么想法吗?
Obs:我知道我可以关闭客户端与 'quit()' 的连接,但我必须确保它会在一段时间后摆脱任何未被应用程序关闭的空闲客户端。
为了防止节点 redis
重新连接,我将密钥 retry_strategy
传递给了 createClient。
它必须是一个返回 false
或抛出 Error