stackexchange.redis – StackExchange Redis连接配置是否已更改?

直到今天我一直使用以下连接到Redis而没有问题,现在我必须明确说明提供数据库参数,因为:

ArgumentOutOfRangeException 
Specified argument was out of the range of valid values. Parameter name: db at StackExchange.Redis.ConnectionMultiplexer.GetDatabase(Int32 db, Object  asyncState) at MyServer.MyClass..cctor()  

这是我一直使用的配置:

 private static Lazy<ConnectionMultiplexer> MyConnection = new   Lazy<ConnectionMultiplexer>(() =>
    {
        return ConnectionMultiplexer.Connect(MyRedisConnString);
    });

    public static ConnectionMultiplexer ConnGer
    {
        get
        {
            return MyConnection.Value;
        }
    }

在班级:

private static readonly IDatabase RedisDb = RedisConfig.ConnGer.GetDatabase();

因此提供db参数:
    RedisConfig.ConnGer.GetDatabase(0);
 当然修正了错误;更令人担忧的是,最近我的班级图书馆里到处都是Redis,是否有任何看似突然的变化!

UPDATE
在认为我已经解决了这个问题后,由于没有明显的原因,ConnectionMultiplexer开始使用上述配置再次失败.我在字符串中尝试了defaultDatabase = 0,并尝试作为Configuration.Option并出现此错误:

异常类型:ArgumentException
    异常消息:不支持关键字“defaultDatabase”
   at StackExchange.Redis.ConfigurationOptions.OptionKeys.Unknown(String key)
   at StackExchange.Redis.ConfigurationOptions.DoParse(String configuration,Boolean ignoreUnknown)
   at StackExchange.Redis.ConnectionMultiplexer.CreateMultiplexer(Object configuration)
   在StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Func 1 multiplexerFactory,TextWriter log)
   在System.Lazy1.CreateValue()`

并使用ConfigOption模式:

异常类型:TypeInitializationException
找不到方法:’Void StackExchange.Redis.ConfigurationOptions.set_DefaultDatabase(System.Nullable 1< Int32>)’.

我也删除了配置的System.Lazy部分,同样的错误.

将0值作为GetDatabase()参数暂时停止了错误;令人担忧的是,这与文件化的实施情况不符.

最佳答案 您可能在配置中指定了错误的默认数据库?

尝试将defaultDatabase = 0添加到连接字符串.

configuration options.

点赞