直到今天我一直使用以下连接到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添加到连接字符串.