StackExchange Redis连接配置是否已更改?

时间:2016-01-27 20:47:43

标签: 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并出现此错误:

Exception type: ArgumentException Exception message: Keyword 'defaultDatabase' is not supported at StackExchange.Redis.ConfigurationOptions.OptionKeys.Unknown(String key) at StackExchange.Redis.ConfigurationOptions.DoParse(String configuration, Boolean ignoreUnknown) at StackExchange.Redis.ConnectionMultiplexer.CreateMultiplexer(Object configuration) at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Func 1 multiplexerFactory, TextWriter log) at System.Lazy 1.CreateValue()`

并使用ConfigOption模式:

Exception type: TypeInitializationException Method not found: 'Void StackExchange.Redis.ConfigurationOptions.set_DefaultDatabase(System.Nullable 1<Int32>)'.

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

将0值作为GetDatabase()参数暂时停止了错误;人们担心的是,这与记录在案的实施情况并不匹配。

2 个答案:

答案 0 :(得分:2)

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

尝试将defaultDatabase=0添加到您的连接字符串。

请参阅configuration options

答案 1 :(得分:0)

这有点旧,但我刚刚经历过它。服务器从Windows更新重新启动,然后在很长一段时间内正常运行时错误开始发生。

要修复它,我刚刚更新到最新版本的dll。