我无法将字符串值存储到azure托管的redis缓存中。使用stackexchange.redis版本2.0.601以及vs2015和vs2019。下面的代码在注解中有错误(基本上即使是成功的connectionmultiplexer.connect也没有建立连接)。
static bool Connect()
{
ConnectionMultiplexer redis;
try
{
ConfigurationOptions cfgOptions = new ConfigurationOptions
{
EndPoints =
{
{"RedisOnMyAzureServer", myPort}
},
AbortOnConnectFail = false,
Ssl = true,
ConnectRetry = 3,
ConnectTimeout = 10000,
SyncTimeout = 10000,
DefaultDatabase = 0,
Password = "myPassword"
};
redis = ConnectionMultiplexer.Connect(cfgOptions); // takes 10.5 seconds on average
}
catch
{ return false; } // never errors
// some diagnostics follow
if (redis.IsConnected)
Console.WriteLine("client connection open");
else
Console.WriteLine("client connection closed");
if (redis.GetDatabase().IsConnected(default(RedisKey)))
Console.WriteLine("database connection open");
else
Console.WriteLine("database connection closed");
// both connection are always closed.
try
{
IDatabase db = redis.GetDatabase();
db.StringSet("mykey", "value");
}
catch
{ return false; } // always errors
return true;
}
db.stringset方法上的最后一次try/catch时出错。我得到这个信息:
没有可用于服务此操作的连接:set mykey;阻塞操作被wsacancelblockingcall调用中断;iocp:(忙=0,空闲=1000,最小=4,最大=1000),工作线程:(忙=2,空闲=1021,最小=4,最大=1023),本地cpu:n/a
1条答案
按热度按时间rxztt3cl1#
我在azureredis缓存上将最小tls版本设置为1.2时也遇到了同样的错误,这是由tls不匹配引起的。通过以下措施解决了这一问题。
添加
sslprotocols=tls12
到连接字符串添加
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
到tls密码套件以下是详细信息,请将tls 1.0和1.1从azure cache for redis中删除