2016-03-18 52 views
1

據我所知,memcached主要用於緩存本地內存中的鍵值對象以加速訪問。遠程/雲端Memcached服務有什麼意義?

但是在像heroku這樣的平臺上,要使用memcached,您必須選擇像Memcachier這樣基於雲的附加組件。我不明白爲什麼這很有用?網絡延遲比訪問本地內存高出幾個數量級,並且完全不可預測。

那麼我錯過了什麼?

回答

1

在適用的用例中,例如訪問基於磁盤的遠程RDBMS或執行昂貴的計算時,網絡延遲比替代方案低幾個數量級。此外,儘管網絡通常不可靠,但在正常操作期間,您仍然可以獲得亞毫秒級的延遲。

也就是說,通常本地緩存在延遲方面擊敗遠程緩存,但另一方面,它可能會成爲問題。

編輯:回答OP的評論。 實際上,您可以將基於磁盤的數據庫視爲磁盤上數據的內存緩存 - 但數據庫服務器的內存是有限的(與任何其他服務器一樣)。因此,外部緩存用於卸載部分壓力,減少對數據庫服務器資源的爭用並將其釋放用於其他任務。

至於延遲,是的 - 我指的是AWS的網絡。雖然我對Memcachier的報價不太瞭解,但我們(Redis Labs)確保我們的Memcached Cloud和Redis Cloud實例與Heroku的dynos確保最小的可能延遲位於同一數據區域。另外,我們還有一個可用區域映射實用程序,它可以讓應用程序和高速緩存實例位於同一區域以達到相同的目的。

+0

DB自己的緩存怎麼樣?我認爲大多數數據庫都有自己的緩存,如果打開了,memcached是否仍然有意義?另外,只有當memcached服務器在同一個區域時,才能實現子ms延遲? – swang

+0

@swang編輯我的答案與答覆 –