StackExchange.Redis-错误的Redis无法随机保存到RDB快照

StackExchange.Redis-错误的Redis无法随机保存到RDB快照,redis,stackexchange.redis,Redis,Stackexchange.redis,我已经在我的应用程序中实现了StackExchange.Redis,总体来说它运行得很好。但是,我们随机得到以下错误 StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled

我已经在我的应用程序中实现了StackExchange.Redis,总体来说它运行得很好。但是,我们随机得到以下错误

StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots, 
but is currently not able to persist on disk. Commands that may modify the data set are 
disabled. Please check Redis logs for details about the error.
我运行了
CONFIG SET dir
CONFIG SET dbfilename
并确认它能够将文件保存在C:\Temp文件夹中而不会出现问题

所以我在寻找这个方向。我是否抓住了错误并接受了它?我是否捕获错误并重试数据保存?还有其他解决办法吗

请不要建议
config set stop writes on bgsave error
no这不是一个解决方案,它正在关闭您真正应该打开的东西


我们的数据库大小没有那么大,它是410个项目,尽管有些字符串非常大(7MB是最大的)。但大多数只是一个非常基本的html块的缓存

在这个问题上,我没有答案,所以我必须努力至少优雅地处理这个错误

try
{
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
catch
{
    System.Threading.Thread.Sleep(5000);
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
我用一个try-catch包装了这套装置,一旦出现错误,我就睡5秒钟,然后再做一次。如果失败,我抛出错误

try
{
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
catch
{
    System.Threading.Thread.Sleep(5000);
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
因此,如果服务器真的停机并出现问题,我仍然会得到错误,但当它遇到这些问题时,我会休眠并让它赶上。到目前为止,这个新代码没有错误


我不知道这是否是推荐的(缺少答案),但它是有效的

在这个问题上,我没有答案,所以我必须努力至少优雅地处理这个错误

try
{
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
catch
{
    System.Threading.Thread.Sleep(5000);
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
我用一个try-catch包装了这套装置,一旦出现错误,我就睡5秒钟,然后再做一次。如果失败,我抛出错误

try
{
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
catch
{
    System.Threading.Thread.Sleep(5000);
    var pending = _redisDb.StringSetAsync(key, value, time);
    _redisDb.Wait(pending);
}
因此,如果服务器真的停机并出现问题,我仍然会得到错误,但当它遇到这些问题时,我会休眠并让它赶上。到目前为止,这个新代码没有错误

我不知道这是否是推荐的(缺少答案),但它是有效的