このページでは、memcache を使用する Python コードの例を紹介します。Memcache は、高性能の分散型メモリ オブジェクト キャッシュ システムで、キャッシュされたデータにすばやくアクセスすることが可能になります。Memcache の詳細については、Memcache の概要をご覧ください。
memcache パターン
Memcache は通常、次のパターンで使用します。
- ユーザーまたはアプリケーションからのクエリをアプリケーションで受け取る。
- そのクエリに適合するデータが memcache にあるかどうか、アプリケーションで調べる。
- データが memcache にあれば、アプリケーションでそのデータを使用する。
- データが memcache になければ、アプリケーションは Datastore に問い合わせ、その結果を今後のリクエストに備えて memcache に保存する。
下記の疑似コードは一般的な memcache リクエストを示しています。
ndb は、内部で memcache を使用してクエリの処理を高速化しています。必要であれば、memcache 呼び出しを明示的に追加し、処理速度の改善を行うこともできます。
データをキャッシュに格納する
以下の例では、Python API を使用して memcache に値を設定しています。
add()
、set_multi()
、set()
の各メソッドの詳細については、Memcache Python API のドキュメントをご覧ください。
memcache を使用するように guestbook.py
を変更する
Guestbook アプリケーションは、リクエストのたびに Datastore にクエリを発行します(ndb を使用しているので、memcache の処理はいくらか速くなっています)。Datastore にクエリを実行する前に memcache を明示的に使用するように、Guestbook アプリケーションを変更できます。
まず、memcache モジュールをインポートして、クエリを実行する前に memcache をチェックするメソッドを作成します。
次に、クエリとページ用の HTML 作成を分離します。キャッシュがヒットしない場合は、このメソッドを呼び出して Datastore に問い合わせ、memcache に保存する HTML 文字列を作成します。
最後に、get_greetings() メソッドが呼び出され、キャッシュがヒットした回数またはヒットしなかった回数に関する統計情報が表示されるように、MainPage
ハンドラを更新します。