2012-03-31 83 views
1

我有一個使用頻繁更新列表的應用程序。例如,每個點擊一個按鈕的人都被添加到與該按鈕關聯的唯一列表中。然後,我們要通過按鈕以降序和限制的方式顯示這些列表。從Redis到MongoDB的數據存儲持久數據

我們一直在使用MySQL和Memcache來做這件事。問題是這不能很好地工作。

我打算做的是使用Redis列表。每個按鈕將持有redis的唯一密鑰,每個用戶都將被添加到使用LPUSH如果我們想獲得最新的10鍵,我們可以使用LRANGE 0 10

現在,最終這些按鈕將「過期」,不再是積極添加或點擊,但是,我們需要歷史數據。這個想法一旦到期,我們將從Redis獲取數據並將其填充到MongoDB。對歷史數據的任何查詢都將針對MongoDB。

有人會提出這個解決方案嗎?這樣做是否「有意義」?

謝謝!

回答

2

這個解決方案很有意義,我在我的應用程序中做了類似的事情。

有一點要注意,雖然:

因此,例如,每一個點擊按鈕的人,被添加到關聯到該按鈕唯一列表。

是否允許該列表中的重複用戶?如果是,請使用列表。如果沒有,你可能想要將它與set(用於獨特的檢查)相結合,但它會花費你一些RAM。

+0

您可能想要進一步向OP解釋的關鍵點是如何在Redis到期時將項目從Redis傳輸到MongoDB。 Redis中的項目到期時無法直接通知。 – 2012-04-01 09:55:06

+0

@DidierSpezia:請注意在問題中引用了「過期」。這提示(對我來說)是應用程序決定何時項目已過期。它現在也可以將數據傳輸給mongo。 – 2012-04-01 09:59:05

+0

非常感謝!是的,到期將由應用程序處理,一旦按鈕到期,應用程序將知道這一點,並將數據從redis複製到mongo,然後從redis中刪除。列表也可以有重複的用戶,所以列表應該很好。 – dzm 2012-04-02 13:58:11