本頁說明如何使用 Google Cloud 控制台設定及監控應用程式的 Memcache 服務。另外,本頁也會說明如何使用 App Engine Memcache Python API 設定並擷取快取值,以及如何使用比較與設定功能,處理對同一個 Memcache 索引鍵的並行寫入要求。如要進一步瞭解 Memcache,請參閱 Memcache 總覽。
設定 Memcache
- 前往 Google Cloud 控制台的「Memcache」頁面。
前往「Memcache」頁面 選取您要使用的 Memcache 服務層級:
- 「共用」(預設):免費的服務層級,提供最理想的快取容量。
- 「專屬」:依 GB 時數快取量收費,為應用程式指派專屬的固定快取容量。
進一步瞭解 Memcache 總覽中可用的服務類別。
快取及擷取值
對值進行快取
使用 add()
新增鍵值 (僅限鍵不含任何值的情況),並加上選用的到期時間:
memcache.add(key="[KEY]", value="[VALUE]", time=[EXPIRATION_TIME])
舉例來說,如要將值 raining
新增至鍵 weather_USA_98105
,並設定從寫入值起算的一小時為效期,請執行以下指令:
memcache.add(key="weather_USA_98105", value="raining", time=3600)
如要進一步瞭解 add()
和其他用來設定值的方法,請參閱 memcache Python API 說明文件。
參閱 Memcache 範例中有關對值進行快取的其他範例。
查詢快取的值
使用 get()
查詢單一鍵的值:
memcache.get(key="[KEY]")
舉例來說,如要取得 weather_USA_98105
鍵的值,請執行以下操作:
memcache.get(key="weather_USA_98105")
如要進一步瞭解 get()
和其他如何查詢值的方法,請參閱 Memcache Python API 說明文件。
在 Google Cloud 主控台中監控 Memcache
- 前往 Google Cloud 控制台的「Memcache」頁面。
前往「Memcache」頁面 - 查看下列報表:
- Memcache 服務等級:顯示應用程式使用的是共用或專屬服務等級。如果您是專案的擁有者,則可以在兩個服務等級之間切換。進一步瞭解服務等級。
- 命中率:顯示從快取提供的資料要求百分比,以及從快取提供的資料要求原始數字。
- 快取的項目。
- 「Oldest item age」(最舊項目時間長度):最舊快取項目已存在的時間。請注意,項目的存在時間長度會在每次使用 (無論是讀取或寫入) 項目時重設。
- 「Total cache size」(總快取大小)。
您可以採取下列任何動作:
- 新增鍵:將新的鍵新增至快取。
- 尋找鍵:擷取現有鍵。
- 清除快取:從快取中移除所有鍵/值組合。
(僅限專屬 Memcache) 查詢「熱門鍵」清單。
- 「熱門鍵」是指 Memcache 中每秒查詢次數 (QPS) 超過 100 的鍵。
- 此清單最多可包含 100 個熱門鍵,依照 QPS 由高至低排序。
處理並行寫入
若要使用比較與設定功能,處理寫入至同一個 Memcache 索引鍵的多個要求:
- 將 Memcache
Client
物件實例化。 - 使用重試循環 (最好設定重試次數上限並使用指數輪詢)
- 在重試循環中,使用
gets()
或get_multi()
取得索引鍵,並將for_cas
參數設為True
。 - 在重試迴圈中,使用
cas()
或cas_multi()
更新索引鍵值。
- 在重試循環中,使用
下列程式碼片段示範如何使用比較與設定功能:
def bump_counter(key):
client = memcache.Client()
while True: # Retry loop
counter = client.gets(key)
if counter is None: raise KeyError('Uninitialized counter')
if client.cas(key, counter+1):
break
重試循環有其必要,因為如果沒有循環,程式碼僅會偵測競爭狀況而不會實際避開。當 memcache 服務用於此處顯示的模式 (也就是使用 gets()
和 cas()
) 時,如果有兩個 (或更多) 不同的用戶端例項同時發生競爭狀態,只有第一個執行 cas()
作業的例項會成功 (傳回 True
),而第二個 (和後續的) 例項會失敗 (傳回 False
)。
您可以修正這段程式碼中的重試次數上限,以避免在最糟糕的情況下,同一個計數器受到大量爭用時出現無限循環的情形。舉例來說,如果嘗試更新計數器的要求數超過 Memcache 服務能夠即時處理的數量,就會發生這類爭用狀況。
如要進一步瞭解比較與設定功能的資訊,請參閱 Memcache 總覽。
後續步驟
- 參閱 Memcache 總覽以進一步瞭解 Memcache。
- 參閱 Memcache 範例以取得如何在 Python 中使用 Memcache 的程式碼範例。