私はあなたがこれを参照していると思います:
Memcacheはトランザクションをサポートしていません。したがって、データストアとmemcacheの両方に適用されることを意図した更新は、2つのうちの1つにのみ行われる可能性があります。このような場合に一貫性を維持するために(おそらくパフォーマンスを犠牲にして)、更新されたエンティティはmemcacheから削除されてから、データストアに書き込まれます。後続の読み取り操作では、memcacheから欠落しているエンティティを検出し、データストアから取得して、読み取りの副作用としてmemcacheで更新します。また、トランザクション内のNDB読み取りはMemcacheを無視します。
したがって、プットで利用できるものが必要な場合は、自分でmemcacheにキャッシュする必要があります。
これは2)に私たちをもたらします
memcache AFAIKに手動で何かを設定した場合、それはNDBの自動キャッシュとはまったく相互作用しません。また、自動バージョンが自動的に機能するキーを使用して手動のmemcacheエントリを設定することはできません。
明示的に制御するコンテンツの周囲にmemcacheのレイヤーを構築するだけです。putを実行するたびに、データストアに配置してからmemcacheに配置する関数を使用し、必要に応じて既存のエントリを無効にします。同様に、getの場合、最初にmemcacheを試し、次にデータストアにフォールバックします。これは、NDBがすでに行っていることとほぼ同じように聞こえます。
おそらく、より細かく制御するためのポリシー関数オプションを見てください:
https ://developers.google.com/appengine/docs/python/ndb/cache#policy_functions
ただし、コンテキスト内キャッシュがすでに必要なことを実行している可能性があることを忘れないでください。
インコンテキストキャッシュは、単一の着信HTTPリクエストの期間のみ存続し、そのリクエストを処理するコードにのみ「表示」されます。これは速い; このキャッシュはメモリ内にあります。NDB関数がデータストアに書き込むとき、コンテキスト内のキャッシュにも書き込みます。NDB関数がエンティティを読み取るとき、最初にコンテキスト内キャッシュをチェックします。エンティティがそこで見つかった場合、データストアの相互作用は発生しません。
クエリはキャッシュ内の値を検索しません。ただし、キャッシュポリシーで指定されている場合、クエリ結果はコンテキスト内キャッシュに書き戻されます(ただし、Memcacheには書き戻されません)。
したがって、putと後続のgetが同じリクエストで発生している場合は、いずれの場合もコンテキスト内のキャッシュから出力されます。