Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 没有可用于服务此操作的连接:SETEX令牌;redis cache Dotnet Framework 4.5上的SocketFailure_Azure_Redis_Stackexchange.redis - Fatal编程技术网

Azure 没有可用于服务此操作的连接:SETEX令牌;redis cache Dotnet Framework 4.5上的SocketFailure

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

我正在尝试将记录写入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”

我的连接多路复用器

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;
}