2011-01-12 60 views
1

什麼是一些使用memcached和mysql數據庫會受益的用例。我猜想這對數據不會隨着時間的推移而變化很大。memcached使用案例

更具體地說,如果我的數據經常變化,那麼它不值得使用memcached嗎?

更具體地說,我試圖將數據庫用作多玩家遊戲的數據結構。所以記錄會隨着玩家的每一個動作而改變。所有球員的觀點都應該用最新的動作來更新。所以我的應用程序正在讀取和寫入密集型。試圖看看我能做些什麼。如果我使用memcached,對於每次寫入,我們讀取最多3次,因爲最多4個玩家可以一次玩遊戲。

謝謝。

帕烏

回答

0

這將取決於你的應用程序的頻率「經常」,怎樣忙。例如,如果您的數據每小時更改一次,但該數據每小時查詢500次,即使緩存頻率相對較高,緩存也是有意義的。

+0

具體而言,我試圖使用數據庫作爲多玩家遊戲的數據結構。所以記錄會隨着玩家的每一個動作而改變。所有球員的觀點都應該用最新的動作來更新。所以我的應用程序正在讀取和寫入密集型。試圖看看我能做些什麼。 – user220201 2011-01-12 19:02:08

+0

@user - 只要您在更新數據庫時更新緩存,儘管寫入數量仍然很高,但您應該顯着減少數據庫讀取次數。你也可以考慮在MySQL中使用MEMORY表,並定期將它們刷新到「真實」支持表。 – 2011-01-12 19:06:26

1

用例:網上商店有很多產品。這些產品被分配到各種頁面,每個產品用戶可以看到某些規格。使用「getSpec」函數調用規格。這是昂貴的和每次查詢。

如果我們把這些放在memcached中,速度會更快。每當有人改變產品的某些東西時,你只需更新memcached。

所以如果你的數據發生了變化,它仍然值得!並非所有事情都可能一次改變。

編輯:就你而言,你可以讓你的寫也更新memcached:沒有陳舊的緩存。但這只是一個隨意的想法,我不知道如果讓你的寫作變得更加沉重,那麼它就有不利之處。這基本上意味着你正在運行memcached中的所有內容,並且只是將你的數據庫用作備份:)

+0

謝謝。說得通。 – user220201 2011-01-12 19:00:25

1

緩存是速度和(可能)陳舊數據之間的折衷。根據您的使用情況,您必須確定速度增益是否合適。

我們緩存所有不需要實時數據的東西。這通常緩存有些東西:報表,用戶內容,整個頁面(儘管你可能會考慮通過一些其他的系統,這些緩存到磁盤)等。

我們的API,允許客戶端查詢大量數據。我們使用memcached來存儲它,以便在客戶端快速分頁。

如果您提前計劃,您可以設置您的應用程序以緩存大部分內容,並根據需要使緩存的某些部分無效(例如,更新數據庫中的某些數據時)。