2015-01-26 75 views
1

我创建了一个新的Azure Redis缓存,这需要将近5分钟才能完成创建。我使用的节点redis的包,这里是我的代码Nodejs Azure Redis缓存永远挂起并读取ECONNRESET错误

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缓存(我花了最大的99.9 SLA等)。仍然没有连接是可能的。

任何帮助,将不胜感激。

回答

2

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

如果您需要使用客户端不支持SSL,有两种选择。一种是使用像'stunnel'这样的应用程序在本地机器和Redis缓存之间创建SSL隧道。我知道stunnel适用于像redis-cli这样的特殊场景,但我不确定它在生产负载下的性能如何。

第二个选项是启用Azure门户中的非SSL端点(端口6379)。但是,我们不建议将此用于生产缓存,因为您的访问密钥和数据将全部以明文形式发送。

+0

这实际上是这个问题,该包目前不支持SSL,因为我了解它。切换到选项#2,直到我有更好的选择。谢谢 – 2015-01-28 10:56:09