无法连接到redis服务器;要创建断开连接的多路复用器,请禁用AbortOnConnectFail。 PING上的SocketFailure

时间:2015-03-13 19:14:02

标签: c# asp.net azure redis stackexchange.redis

我试图用一个简单的例子来读取和编写azure redis缓存,我得到了这个错误

  

类型' StackExchange.Redis.RedisConnectionException'的异常发生在StackExchange.Redis.dll中但未在用户代码中处理

     

附加信息:无法连接到redis服务器;要创建断开连接的多路复用器,请禁用AbortOnConnectFail。 PING上的SocketFailure

我正在使用的代码就是这个,我更改了dns和密码

// Get Connection instance
ConnectionMultiplexer connection = ConnectionMultiplexer
    .Connect("xx.redis.cache.windows.net,ssl=false,password=...");
// Get database
IDatabase databaseCache = connection.GetDatabase();
// Add items
databaseCache.StringSet("foo1", "1");
databaseCache.StringSet("foo2", "2");
// Add items with experation value
databaseCache.StringSet("foo3", "3", TimeSpan.FromMinutes(20));

Stopwatch sw = new Stopwatch();

sw.Start();

// Get item value
string foo1Value = databaseCache.StringGet("foo1");

sw.Stop();

Console.WriteLine("Elapsed={0}", sw.Elapsed);
return View();

2 个答案:

答案 0 :(得分:7)

Azure Redis缓存仅默认启用SSL端点。最安全的方法是设置" ssl = true"调用ConnectionMultiplexer.Connect()。

或者,您可以使用Azure门户在Azure Redis缓存上启用非SSL端点,但您的密码和所有数据将以明文形式发送。

答案 1 :(得分:5)

我有完全相同的例外,结果是公司防火墙,它阻止了端口6379,6380。

我在公司网络外的环境中复制了我的测试控制台应用程序并且连接成功。 因此,如果Redis服务器在Internet上运行且您的网络位于防火墙后面,请确保端口已打开。