2014-10-20 30 views
0

我對Redis非常感興趣,我有一個想法並且想知道它是否適合用例,或者如果它沒有任何其他數據存儲建議。還有關於存儲數據的任何提示將不勝感激。想要使用Redis作爲事件統計存儲

我的想法只是一個簡單的事件系統,這樣的事件發生,它被存儲在Redis的如下

鑰匙|值 [unixtimestamp]:[system]:[event] | [結果]

的數據可以是任何銷售,展示,錯誤,API響應時間,頁面加載時間任何實時分析。然後我希望能夠根據這些數據製作圖表。

回答

2

這不是一個理想的設計,因爲它不會有效地支持您的讀取模式,它會在內存方面可能造成浪費,如果你的[結果]短/小。相反,考慮使用Redis的sorted sets與時間戳得分,以下列方式:

ZADD [system]:[event] [timestamp] [result] 

注意,設置成員必須是唯一的,所以如果[結果]「通過連接小號基數較低,使其獨特時間戳它(和過濾出來,當你圖),即:

ZADD [system]:[event] [timestamp] [result]:[timestamp] 

這樣,你就可以通過調用ZRANGEBYSCORE和製圖的結果獲取的測量範圍。

+0

如果我每分鐘添加100個或1000個記錄,那麼除了時間之外,是否還需要添加其他類型的唯一ID? – 2014-10-21 06:45:50

+0

由於時間戳分辨率爲1秒,因此如果您有可能獲得與該系統/事件相同的結果,那麼是的。 – 2014-10-21 08:37:39

+0

感謝您的幫助,我仍然很難在Redis周圍徘徊。如果我想存儲更復雜的密鑰,比如哈希或者只是一些json。例如:{page:x,loadtime:y},我想按照這些數據進行分組或查詢,這些數據必須位於我的應用層中,或者可以redis幫助。 – 2014-10-21 20:43:41