Azure 没有可用于服务此操作的连接:SETEX令牌;redis cache Dotnet Framework 4.5上的SocketFailure
我正在尝试将记录写入Redis缓存。但有时我会遇到以下例外情况 我不知道为什么会出现这个错误 出现错误。“,“ExceptionMessage”:“没有可用于服务此操作的连接:SETEX令牌;xxx.redis.cache.windows.net:6380/订阅上的SocketFailure,来源:CheckForStaleConnection,输入缓冲区:0,未完成:4,上次读取:1s前,上次写入:0s前,未响应写入:1s前,保持活动:60s,挂起:0,状态:ConnectedEstablishing,上次心跳:never,上次mbeat:-1s前,全局:1s前,经理:RecordConnectionFailed\u ReportFailure,错误:never;IOCP:(忙=0,空闲=1000,最小=4,最大=1000),工作线程:(忙=1,空闲=8190,最小=4,最大=8191),本地CPU:n/a,“异常类型”:“StackExchange.Redis.RedisConnectionException” 我的连接多路复用器Azure 没有可用于服务此操作的连接:SETEX令牌;redis cache Dotnet Framework 4.5上的SocketFailure,azure,redis,stackexchange.redis,Azure,Redis,Stackexchange.redis,我正在尝试将记录写入Redis缓存。但有时我会遇到以下例外情况 我不知道为什么会出现这个错误 出现错误。“,“ExceptionMessage”:“没有可用于服务此操作的连接:SETEX令牌;xxx.redis.cache.windows.net:6380/订阅上的SocketFailure,来源:CheckForStaleConnection,输入缓冲区:0,未完成:4,上次读取:1s前,上次写入:0s前,未响应写入:1s前,保持活动:60s,挂起:0,状态:ConnectedEstablis
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["RedisConString"]);
});
public static ConnectionMultiplexer Connection
{
get { return lazyConnection.Value; }
}
public bool Add(string key, string value, int expiryDays)
{
IDatabase cache = Connection.GetDatabase();
cache.StringSet(key, value, TimeSpan.FromDays(expiryDays));
return true;
}
private static Lazy lazyConnection=new Lazy(()=>
{
返回ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings[“重新解析”]);
});
公共静态连接多路复用器连接
{
获取{return lazyConnection.Value;}
}
公共bool Add(字符串键、字符串值、int expiryDays)
{
IDatabase cache=Connection.GetDatabase();
StringSet(key,value,TimeSpan.FromDays(expiryDays));
返回true;
}
请阅读此处
我也有同样的问题,下面的连接字符串对我有效。
我在我的连接字符串中添加了allowAdmin=True
,它成功了。我的Redis配置设置为仅允许SSL端口
redis-xxx-dev.redis.cache.windows.net:6380,allowAdmin=True,password=XXXX,ssl=True,abortConnect=False
这是我的Redis工厂
public class RedisFactory
{
private static readonly Lazy<ConnectionMultiplexer> Connection;
#pragma warning disable CA1810 // Initialize reference type static fields inline
static RedisFactory()
#pragma warning restore CA1810 // Initialize reference type static fields inline
{
var connectionString = ConfigHelper.Instance.RedisCacheConnectionString;
var options = ConfigurationOptions.Parse(connectionString);
Connection = new Lazy<ConnectionMultiplexer>(
() => ConnectionMultiplexer.Connect(options)
);
}
public static ConnectionMultiplexer GetConnection() => Connection.Value;
}
公共类工厂
{
私有静态只读延迟连接;
#pragma警告禁用CA1810//初始化引用类型静态字段内联
静态再工厂()
#pragma warning restore CA1810//初始化内联引用类型静态字段
{
var connectionString=ConfigHelper.Instance.RedisCacheConnectionString;
var options=ConfigurationOptions.Parse(connectionString);
连接=新延迟(
()=>ConnectionMultiplexer.Connect(选项)
);
}
公共静态连接多路复用器GetConnection()=>Connection.Value;
}