直到今天,我一直在使用以下连接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()参数暂时停止了错误;人们担心的是,这与记录在案的实施情况并不匹配。
答案 0 :(得分:2)
答案 1 :(得分:0)
这有点旧,但我刚刚经历过它。服务器从Windows更新重新启动,然后在很长一段时间内正常运行时错误开始发生。
要修复它,我刚刚更新到最新版本的dll。