2017-04-01 41 views
0

我們的數據庫主要是讀取數據,但我們希望在視頻中添加「查看次數」和「豎起大拇指」。如何處理redis中的「查看次數」

當我們強調在mysql中測試增量視圖時,我們的數據庫開始死鎖。

我在考慮處理這個問題,通過擁有查看計數的redis DB,並且只有在密鑰過期後才寫入數據庫。但是,我聽到通知不一致,我不想丟失視圖數據。

有沒有更好的方法去做這件事?或者說redis通知不一致的說法不正確。

感謝,

薩米

回答

0

Redis的密鑰空間通知是一致的,但因此無法保證傳送。

如果您不想丟失數據,請實施自己的手動過期計數器的後臺進程 - 即複製到MySQL並從Redis中刪除。

實現這種懶惰驅逐模式有幾種方法。例如,您可以使用帶有兩個字段的Redis哈希值:您可以使用HINCRBY的值字段和用於到期邏輯目的的時間戳字段。您的後臺進程然後可以通過SCAN鍵空間來識別過期的密鑰。

另一種方法是使用Sorted Sets來管理計數器。在某些情況下,您可以只使用一個Sorted Set,將TTL和count分別編碼到每個成員的分數中(分別使用float的整數和小數部分),但在大多數情況下,使用兩個Sorted Sets更簡單 - 一個用於TTL和其他皮草價值。

+0

我會試試這個!謝謝! –

+0

有沒有辦法掃描特定的按鍵,還是隻掃描全部並搜索每個單獨的按鍵 –