StackExchange.Redis - MISCONF Redis随机无法保存到RDB快照

时间:2016-07-02 22:22:58

标签: redis stackexchange.redis

我已经在我的应用程序中实现了StackExchange.Redis,整体而言它运行良好。但是我们随机收到以下错误。

sed

我运行了sed -e ':a' -e 'N;$!ba' -e 'y/\n/ /' 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. 并确认它能够在C:\ Temp文件夹中保存文件而不会出现问题。

所以我正在寻找方向。我是否抓住了错误并吞下了它?我是否捕获错误并重试数据保存?还有其他解决方案吗?

请不要推荐CONFIG SET dir这不是一个解决方案,它会关掉你真正应该拥有的东西。

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

1 个答案:

答案 0 :(得分:0)

截至本回答,我对此主题没有答案,所以我必须努力至少优雅地处理错误。

我把一个SET包裹在一个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);
}

因此,如果服务器真的出现故障并且出现问题我仍然会收到错误,但当时它会出现这些打嗝,我会睡觉并让它赶上来。到目前为止,这个新代码没有错误。

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