本頁說明如何使用 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 service level」(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 的程式碼範例。