2017-09-25 3 views
0

Szenario ist: Wenn ich einen Test ausführen, wenn es fehlschlägt dann Zeitstempel und Fehler Wert in redis speichern und die letzten drei Zeitstempel und Werte für den gleichen Test, wenn alle fehlschlagen dann senden eine E-Mail an den Projektleiter.Redis Datentyp zum Speichern der gleichen Werte mit unterschiedlichen Scores

Ich dachte off-Werte in sortierter Zsoll in redis Zugabe:

zadd Health:TestName timestamp1 "Fail" 
zadd Health:TestName timestamp2 "Success" 
zadd Health:TestName timestamp3 "Fail" 
zadd Health:TestName timestamp4 "Fail" 
zadd Health:TestName timestamp5 "Fail" 

Also, wenn ich den Test TestName jetzt laufen und wenn es scheitert, I get last three timestamps and values and check if all are Fail. Wenn alle Fehler sind, dann sende eine Email. Aber Zadd erlaubt mir nicht, denselben Wert für verschiedene Punkte hinzuzufügen. Was könnte die andere Möglichkeit sein, diese Daten zu speichern.

Hinweis. Ich muss nur redis verwenden.

Antwort

1

Der „Trick“ ist hier die Mitglieder einzigartig zu machen, und die einfachste Art und Weise ist das Ergebnis und den Zeitstempel, d.h .:

zadd Health:TestName timestamp1 "Fail:timestamp1" 
zadd Health:TestName timestamp2 "Success:timestamp2" 
zadd Health:TestName timestamp3 "Fail:timestamp3" 
zadd Health:TestName timestamp4 "Fail:timestamp4" 
zadd Health:TestName timestamp5 "Fail:timestamp5" 

Dann verketten, wenn die Mitglieder zu holen, einfach das Suffix ignorieren.

Tipp: Um RAM zu sparen, verwenden Sie möglichst kurze Zeichenfolgen. In Ihrem Fall, anstelle von "Fail" und "Success", verwenden Sie einfach 0 und 1 (oder "F" und "S" ...) und sparen so 9 Bytes für jedes Mitglied. Sie können auch den Doppelpunkt (":") beim Verketten für ein extra gespeichertes Byte, d. H. Ftimestamp1, Stimestamp2 und so weiter, fallen lassen.

Verwandte Themen