2010-09-21 65 views
4

我正在使用memcache進行緩存(顯然),這是偉大的。但我也將它用作交叉請求/進程數據存儲。例如,我在我的一個網頁上進行網絡聊天,並使用memcache將在線用戶列表存儲在其中。工程很好,但它困擾我,如果我不得不刷新整個memcache服務器(無論出於何種原因),我放棄了在線列表。我也用它來保留一些內容的視圖記錄(然後我定期更新數據庫中的實際行),如果我清除了緩存,我將丟失有關視圖的所有數據(從最後一次寫入數據庫)。什麼使用,而不是memcache

所以我問的是這個:我應該用什麼來代替memcache來處理這種事情?它需要快速,最好將其數據存儲在內存中。我認爲一些noSQL產品會很適合這裏,但我不知道哪一個。我想使用一些我將來可以用於其他用例的東西,想到分析(例如用戶搜索最多的是什麼)。

我使用PHP,因此它必須具有良好的綁定。

回答

6

Redis!它就像類固醇上的memcache(好樣的)。 Herearesomedrivers

Redis是一個高級的鍵值存儲。它與memcached類似,但數據集不易變,值可以是字符串,完全類似於memcached,但也可以是列表,集合和有序集合。所有這些數據類型都可以使用原子操作來操作,以推/拉元素,添加/移除元素,執行服務器端聯合,交集,集合之間的差異等等。 Redis支持不同種類的排序功能。

+0

打了我幾秒鐘。 +1用於redis。有助於它像memcache一樣工作,但可以堅持。可能還應該提及它有四種不同的PHP驅動程序。我相信其中一個人會以你喜歡的方式工作。 – lazyconfabulator 2010-09-21 13:05:01

+0

出於好奇:可以使用redis而不是memcache嗎?如果是,爲什麼? – 2010-09-21 13:06:35

+1

Redis是一個完整的持久性數據結構存儲守護進程。很像RDMS(沒有ACID)。它允許使用許多複雜的數據類型,如列表,集合和有序集合。對我來說,這聽起來像是一個很適合你的需求。 – 2010-09-21 13:38:06

1

您可以嘗試memcachedb。它使用與memcache完全相同的協議,但它是持久存儲。

你也可以嘗試cassandra或redis

+0

我只考慮cassandra只有當你想打擊一些*嚴重*縮放的用途。目前它只能被非常大的網站使用:digg,facebook和朋友。 – 2010-09-27 00:44:35

+0

我其實完全同意這個人剛剛說的話 – 2010-09-27 08:56:12