2016-06-13 13 views
4

Gibt es eine Möglichkeit, den StackExchange.Redis-Client zum Speichern eines Nullwerts in Redis zu verwenden?Kann ich StackExchange.Redis verwenden, um einen Null-Wert in Redis zu speichern?

Wenn Sie IDatabase.StringGet(key) verwenden, dann wird die Rückkehr von Null verwendet, um anzuzeigen, dass dort "kein Ergebnis" war. Wenn Sie also IDatabase.StringSet(key, null) verwenden, dann wissen Sie nicht, ob Null Wert oder Kein Wert Wert ist!

Gibt es einen Mechanismus für Catering? - d. h. Sie möchten einen negativen zwischenspeichern.

Ich hatte eher gehofft, böse Sentinel Werte (wie value ?? new byte[] {1}) zu vermeiden, die später Probleme verursachen könnten, wenn ein Wert passierte!

Ich schaute auf RedisValue.Null, aber das ergibt nur eine Null, die die gleichen Probleme wie oben hat.

+0

Was ist Ihr Anwendungsfall? Warum möchten Sie null gegen einen Schlüssel speichern? – zendu

+1

Meine Cache-Schicht reduziert Aufrufe an die DB. Es gibt Zeiten, in denen ich keine Ergebnisse von meiner Datenbank habe, also möchte ich dieses Ergebnis zwischenspeichern, so dass das nächste Mal Anrufe den Cache nur treffen (mit einem Ergebnis von "Daten leer"). Im Moment zeigt die Nullantwort an, dass der Cache kein Ergebnis hatte, also gehe ich zur DB, um dann das "Nichts" -Ergebnis zu holen. – OffHeGoes

Antwort

0

Dies ist das übliche Dilemma mit Nullen. Wir hatten ähnliche Situationen und hier ist, wie wir mit ihnen umgegangen sind: 1. Wir haben die Liste der Daten aus dem Backend-System abgerufen und im Cache gespeichert. Die DAL-Klasse gab null zurück, wenn keine Daten abgerufen wurden, und gab eine Ausnahme aus, wenn die Kommunikation mit dem Backend-System fehlgeschlagen ist. Um den Nullwert zwischenzuspeichern, haben wir null durch eine leere Liste ersetzt - was immer noch bedeutet, dass kein Datum verfügbar war. 2. Früher speicherten wir Benutzer Präferenz als String im Backend. Nullwert bedeutet, dass der Benutzer keine Präferenz eingestellt hat. Um dies zwischenzuspeichern, haben wir einen speziellen String-Wert zwischengespeichert, der im Anwendungsfall niemals vorkommen würde - so etwas wie NO PREFERENCE.

HTH.

Verwandte Themen