2017-09-25 141 views
0

的情況是:當我運行一個測試,如果再失敗店時間戳和Redis的失敗值,獲得最後三個時間戳和值相同的測試,如果一切都失敗了,送一個電子郵件項目負責人。Redis的數據類型存儲相同的價值觀與不同的分數

我想關在Redis的增加分數排序zset:

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" 

所以,如果我跑測試TestName現在,如果失敗,I get last three timestamps and values and check if all are Fail。如果全部都失敗,則發送電子郵件。但Zadd不允許我爲不同的分值增加值相同。什麼可能是另一種方式來存儲這些數據。

注意。我只使用redis

回答

1

的「絕招」這裏是使成員唯一的,最簡單的方法是連接的結果,時間戳,即:

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" 

然後,獲取成員時,簡單地忽略後綴。

提示:保存RAM,切換到使用短-AS-可能串。在你的情況,而不是「失敗」和「成功」只是用0和1(或「F」和「S」 ...),這樣可以節省每個成員9個字節。您也可以刪除冒號(「:」)串聯一個額外的保存字節,即Ftimestamp1Stimestamp2等等時。

相關問題