node.js - Nodejs Azure Redis 缓存永远挂起并读取 ECONNRESET 错误

标签 node.js caching azure node-redis azure-redis-cache

我创建了一个新的 Azure Redis 缓存,大约需要 5 分钟才能完成创建。我正在使用 node-redis 包,这是我的代码

var client = redis.createClient(
  process.env.REDIS_PORT || 6379,
  process.env.REDIS_HOST || '127.0.0.1'
);
if(process.env.REDIS_HOST) {
  client.auth(process.env.REDIS_KEY);
}

是的,这些环境变量已正确设置,它只是挂起一段时间并引发错误:Redis 连接到 mycache.redis.cache.windows.net:6380 失败 - 读取 ECONNRESET。

现在,当我使用 redis-cli 尝试连接 redis-cli -h myhost -p 6380 -a the-auth-key 它只是卡在命令行并且没有连接似乎成立,但也没有错误。它只是什么都不做。如果我更改端口等,则会出现连接错误。所以我现在想知道我做错了什么?

我已经在不同的区域创建了另一个 Redis 缓存(我选择了最大的,SLA 99.9 等)。尽管如此,仍然无法建立连接。

如有任何帮助,我们将不胜感激。

最佳答案

默认情况下,新缓存仅启用 SSL 端点(端口 6380)。某些客户端(例如 redis-cli)不支持 SSL。您需要检查 node-redis 是否支持 SSL。如果您尝试使用不支持 SSL 的客户端连接到 SSL 端口,您将收到错误消息。

如果需要使用不支持SSL的客户端,有两种选择。一种是使用“stunnel”等应用程序在本地计算机和 Redis 缓存之间创建 SSL 隧道。我知道 stunnel 对于像 redis-cli 这样的临时场景效果很好,但我不确定它在生产负载下的表现如何。

第二个选项是在 Azure 门户中启用非 SSL 终结点(端口 6379)。但是,我们不建议在生产缓存中这样做,因为您的访问 key 和数据都将以明文形式发送。

关于node.js - Nodejs Azure Redis 缓存永远挂起并读取 ECONNRESET 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159503/

相关文章:

javascript - 使用 canvas.toDataURL() 中的 node.js 保存图像文件

node.js - 运行 Mocha 测试时出现 node-mssql "connection is closed",但在应用程序中运行良好

node.js - 在客户端(在 Node.js 服务器上)从 CoffeeScript 渲染 JS

javascript - Mongoose 类型错误 : Question is not a constructor

performance - 如何有效地增加 IIS 7 中应用程序池的内存和缓存大小

firebase - Firebase托管Flutter Web App无法清除首次部署的缓存

angularjs - 有效地使用 Angular 的 304 响应状态代码

python - 无法将 Python 客户端连接到 Azure Cosmo Bd : Import pydocumentdb fails

azure - azure 中的事件日志和审核日志之间的区别?

azure - 使用 Azure CLI 将 Application Insights 添加到 azure 函数