2011-12-06 47 views
0

我已閱讀了memcached的一些教程,並且我有幾個問題,以緩解對默認數據庫的請求的痛苦。是memcached只是實例化另一個虛擬操作系統?

什麼是正在實例化允許memcached來操作?
是安裝了mysql的虛擬操作系統還是整個數據庫存儲在內存中?

我的另一個問題是說我有一個博客並使用memcache,並且用戶從瀏覽器請求數據,請求首先檢查數據的memcache,並看到數據存在並顯示給該用戶。

如果所請求的數據與原始數據庫上的數據不匹配,那麼該怎麼辦?因爲我自己更新了它。緩存怎麼知道我改變了它?
它是否總是檢查數據庫上的數據是否與緩存相同?

+0

你真的可以理解你自己的問題嗎? – Macmade

回答

0


你會開始在每一個你需要機memcached服務器,分配的內存量奉獻給memcached的。
然後在庫memcached中,您將使用每臺服務器上的大量內存。
注意:沒有辦法知道在哪個服務器上存儲單個對象。


重複的機構是很容易:可以設置超時的對象。超時時間過後,系統將刪除該對象。
要存儲一個對象,您將爲該對象分配一個鍵作爲散列,因爲您不希望該對象具有相同的鍵。

+0

而不是刪除,在超​​時時,它會將其標記爲無效,並且**可能被**覆蓋,但不會因過期而被刪除。 – StormByte

0

the memcached front-page

Memcached是從數據庫調用,API調用,或網頁渲染的結果任意數據的小塊(字符串,對象)在內存中的鍵值存儲。

雖然memcached經常與MySQL一起使用,但它與MySQL或任何其他數據庫沒有特別的聯繫。它只是一個簡單的鍵值存儲,提供對鍵緩存的數據的持續時間(O(1))訪問。數據由memcached進程存儲在內存中。 (其中大部分解釋爲on the FAQ)。

關於第二個問題,確實是您的應用程序/您的責任,以確保memcached被通知任何更改。您可以通過緩存數據的合理到期時間來執行此操作,或者使用腳本或命令行界面手動清除過期條目。如果通過框架進行更改,某些框架將處理通知memcached的更改。最終,如果您需要確保用戶始終能夠實時訪問最新數據,緩存不是解決您的問題的好方法。緩存的工作原理是可以偶爾提供陳舊的數據 - 您應該構建應用程序,以便緩存可能陳舊的數據,但始終使用查找權威來源來查找必須是必須新鮮的數據。

相關問題