Memcache の例

このページで提供するコードサンプルは、 Memcache を使用するための Python コードです。 Memcache は、高性能の分散型メモリ オブジェクト キャッシュ システムで、キャッシュされたデータにすばやくアクセスすることが可能になります。Memcache の詳細については、Memcache の概要をご覧ください。

memcache パターン

Memcache は通常、次のパターンで使用します。

  • ユーザーまたはアプリケーションからのクエリをアプリケーションで受け取る。
  • そのクエリに適合するデータが memcache にあるかどうか、アプリケーションで調べる。
    • データが memcache にあれば、アプリケーションでそのデータを使用する。
    • データが memcache になければ、アプリケーションはデータストアに問い合わせ、その結果を今後のリクエストに備えて memcache に保存する。

下記の疑似コードは一般的な memcache リクエストを示しています。

def get_data():
    data = memcache.get('key')
    if data is not None:
        return data
    else:
        data = query_for_data()
        memcache.add('key', data, 60)
    return data

ndb は、内部で memcache を使用してクエリの処理を高速化しています。必要であれば、memcache 呼び出しを明示的に追加し、処理速度の改善を行うこともできます。

データをキャッシュに格納する

以下の例では、Python API を使用して memcache に値を設定しています。

# Add a value if it doesn't exist in the cache
# with a cache expiration of 1 hour.
memcache.add(key="weather_USA_98105", value="raining", time=3600)

# Set several values, overwriting any existing values for these keys.
memcache.set_multi(
    {"USA_98115": "cloudy", "USA_94105": "foggy", "USA_94043": "sunny"},
    key_prefix="weather_",
    time=3600
)

# Atomically increment an integer value.
memcache.set(key="counter", value=0)
memcache.incr("counter")
memcache.incr("counter")
memcache.incr("counter")

add()set_multi()set() の各メソッドの詳細については、Memcache Python API のドキュメントをご覧ください。