2016-07-02 12 views
1

Ich habe StackExchange.Redis in meiner Anwendung implementiert und insgesamt funktioniert es ziemlich gut. Allerdings erhalten wir zufällig den folgenden Fehler.StackExchange.Redis - MISCONF Redis kann nicht speichern in RDB Snapshot

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. 

lief ich die CONFIG SET dir und CONFIG SET dbfilename und bestätigt, dass es in der Lage ist, die Datei ohne Probleme in der C zu speichern: \ Temp-Ordner.

Also ich bin auf der Suche nach Richtung. Erfasse ich den Fehler und schlucke es? Erhalte ich den Fehler und versuche erneut, Daten zu speichern? Gibt es eine andere Lösung?

Bitte nicht empfehlen config set stop-writes-on-bgsave-error nein dies ist keine Lösung, es ist etwas abschalten, was Sie wirklich haben sollten.

Unsere Datenbankgröße ist nicht so groß, es ist 410 Elemente, obwohl einige der Strings wirklich groß sind (7MB ist der größte). Aber die meisten sind nur der Cache eines sehr einfachen HTML-Blocks.

Antwort

0

Ab dieser Antwort habe ich keine Antworten zu diesem Thema, also musste ich mich bemühen, den Fehler mindestens elegant zu behandeln.

Ich wickelte das SET in einem Versuch zu fangen, bei einem Fehler ich für 5 Sekunden schlafen und es erneut tun. Wenn das fehlschlägt, werfe ich den Fehler.

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); 
} 

Also, wenn der Server wirklich nach unten und Problemen, die ich immer noch den Fehler, aber zu der Zeit wird es diesen Schluckauf ich schlafen und lassen Sie es aufholen. Bis jetzt keine Fehler mit diesem neuen Code.

Ich weiß nicht, ob dies empfohlen wird (Mangel an Antworten), aber es funktioniert.