如何杀死Redis上的Node打开的空闲客户端?

时间:2017-03-10 15:17:45

标签: node.js express redis node-redis

我很难自动关闭Redis'客户连接。这肯定是redis包的问题:

https://www.npmjs.com/package/redis

Redis将保持连接处于活动状态,直到您关闭它们或达到默认为无限的超时。

我意识到这一点:

how do I kill idle redis clients

甚至在阅读SO之前,我试图通过.conf文件和命令行设置timeout配置,但它们都没有工作。

实际发生的事情非常奇怪:

如果我在N秒后运行CLIENT LIST

  • 仍有相同数量的空闲连接
  • 客户空闲' info从0重新启动(例如,如果我设置10秒超时,则在{11}之后idle信息为1)。
  • 地址更改。端口号会在创建新连接时发生更改,以免丢失该客户端。
  • 客户端实际上已连接到Node。它似乎是一个新的节点过程。如果我保持节点应用程序UP,连接将不会消失。如果我关闭应用程序,它创建的所有连接都关闭。因此,redis模块可能正在重新启动'连接。

关于我应该做什么的任何想法都不会强制“恢复”'被杀害的客户?

Obs:我知道我可以关闭客户与' quit()'的联系,但我必须保证它将摆脱任何未被关闭的闲置客户端申请一段时间后。

1 个答案:

答案 0 :(得分:0)

为防止节点redis重新连接,我将密钥retry_strategy传递给createClient。

它必须是返回false或抛出Error

的函数