Memcache can be updated in ```PutMulti()```. The NDB docs explanation brings up valid points why it can't be done easily, however it can be done with some effort, and has been done in Objectify, the NDB-like java library from where my experience comes from. Anyway, just adding a memcache write after the datastore Put() will introduce race conditions, so best that it stays as it is until there's a robust solution that deals with the intricacies.

As for queries, the answer is quite simple. Non-ancestor queries on high-replication datastore are eventually consistent. Meaning that some queries will return stale results, even from the datastore.