2012-01-03 77 views
1

我一直在閱讀,很多人使用Redis或其他鍵值存儲/ NoSQL解決方案作爲其網站的分佈式緩存。緩存大量數據

也許我沒有完全理解,但看起來這僅適用於共享數據的解決方案。例如,如果我有一個網站需要用戶登錄,並且他們生成的查詢返回的數據僅針對那些無法爲所有用戶緩存的用戶(在我的案例中爲銀行/資產信息),但此類型的解決方案不起作用。

不幸的是,該數據庫是在我們所有應用程序共享,當它陷入了下來,該網站被越陷越深爲好。由於每個用戶都有千兆字節的信息,因此我顯然無法緩存所有這些信息,並且每個網頁都會查詢完全不同的信息。

是否有一些緩存策略可用於此類場景?

回答

1

像速度的分佈式緩存不需要它存儲的數據被限制爲「共享」數據。但是您必須從數據庫讀取數據並將其存儲在緩存中,這需要時間。

幾個備選方案:

  • 分區數據,所以它在幾個DB服務器攤開
  • 添加儘可能多的RAM,你可以給每個數據庫服務器,允許SQL服務器緩存什麼可以

有到分區主題的許多變化....

是Web應用程序的負載平衡? Web層也有緩存選項 - ASP.NET對象緩存是一個很好的開始。

0

您的Web客戶端可能會多次請求相同的數據(對於給定的用戶)。所以緩存可以在這種情況下帶來好處。

但你去實現一個巨大的緩存解決方案之前,你真的需要看是特別慢或者執行一個巨大的次數的查詢,看看是否可以以任何方式對其進行優化。

然後看看升級你的數據庫機器。

0

我讀過一篇關於MySpace在性能問題上有很大增長的不錯文章。

您可以在文章here。從文章

一個報價脫穎而出:

添加緩存服務器是「這是我們應該從一開始就做 ,但我們成長太快,沒有時間 坐下來做「,Benedetto補充道:

如果問題出在您的數據庫服務器上,請考慮分區數據並利用數據庫場來分散負載。也想想SSD的!他們可以真正加快您的數據庫訪問代碼。

0

根據您的數據是如何動態的,你可以考慮使用Fragment Caching。這將緩存頁面的HTML而不是數據,所以如果數據量禁止緩存,那麼這可能適用於你