NDB はいくつかの非常に優れた機能を提供し、独自のキャッシュ レイヤーで実装する場合よりも一般的に最適化されるはずなので、NDB の使用を開始しています。
ただし、key.get() のような単純な操作で何が起こっているのかをすべて理解しているわけではありません。Appstats は、このような操作中に、起動したばかりの開発サーバーで 4 つの RPC が作成されることを示しています。
@434ms memcache.Get real=1ms api=0ms
@437ms memcache.Set real=1ms api=0ms
@438ms memcache.Get real=2ms api=0ms
@441ms datastore_v3.Get real=4ms api=0ms
memcache.Get ops が 2 つあるのはなぜですか? memcache.Set が datastore_v3.Get の前に表示されるのはなぜですか? デフォルトのキャッシュ オプションを使用します。ndb.context.get を見ると、いくつかの洞察が得られますが、まだ混乱しています。memcache.Set は LOCK について作成されます。しかし、2 つの Get 呼び出しは同じように見えますが、データストアの Get の直後に Set がないのはなぜですか?