2011-01-11 46 views
3

我使用Redis來存儲來自許多模擬傳感器的數據日誌。我的目標是根據日誌時間戳對數據進行排序,並從特定的日期時間範圍中提取數據。我的原始數據模型是使用傳感器名稱作爲關鍵字,併爲每個時間戳和附加到hashkey的值設置一個散列。Redis - 尋求數據建模建議

所以。如果我有SensorA,SensorB和SensorC,則執行Keys *將返回1. SensorA,2. SensorB和3. SensorC。做hget SensorB 20110111172900會返回,比方說25.

當前建模的問題是,它不允許排序時間戳,或者所以我認爲,因爲我所有嘗試失敗。

有人能夠建議一個數據模型,允許排序和提取數據範圍,或建議適當的排序參數,這將允許在上面的數據模型中。

+0

再次看着你已經給我的視覺排序集,使他們明顯的選擇。 - 謝謝湯姆! – 2011-01-12 13:05:28

回答

6

在這種情況下,排序集合可能比散列更合適。

該值將是時間戳和傳感器值的組合。得分將是時間戳。使用ZRANGEBYSCORE檢索值。讀取和寫入都從O(1)到O(Log(N)),但您可以返回一系列值。

您也可以使用列表來獲取O(1)插入。讀取O(N)用於檢索特定條目,但獲取最新條目將是O(1)。

+0

雖然我們發現了一個小小的警告。如果傳感器結束多次讀取相同的值(成員)(超過非常輕微),則先前的得分(時間戳)將被覆蓋。 – 2011-01-12 17:19:18