документация (https://cloud.google.com/appengine/docs/python/ndb/) утверждает, чтоGAE Python NDB Datastore - нет необходимости в memcache.set?
NDB использует Memcache как служба кэша для "горячих точек" в данных
Я сейчас, используя memcache
только следующим образом: memcache.set(key=(id), value=params, time=0)
Это довольно часто истекает (автопотоки), поэтому я хотел бы использовать NDB Datastore. Я думал, что мне придется всегда класть ключ-значение как в NDB, так и в Memcache, а затем проверять оба. Выполняется ли это автоматически NDB?
Т.е. ancestor_key = ndb.Key("Book", guestbook_name or "*notitle*")
greetings = Greeting.query_book(ancestor_key).fetch(20)
бы, что неявно устанавливается Memcache
?
И когда я прочитал из NDB, негласно ли он попытался бы сделать memcache.get(key)
?
Благодарим за ваше терпение.
EDIT - То, что я пробовал:
В качестве теста я пытался что-то вроде этого:
class Book(ndb.Model):
content = ndb.StringProperty()
class update(webapp2.RequestHandler):
def post(self):
p1='1'
p2='2'
p3='3'
p4='4'
p5='5'
id='test'
paramarray = (p1,p2,p3,p4,p5)
book = Book(name=id,value=paramarray)
# OR likes this - book = Book(ndb.Key(id),value=paramarray)
book.put()
Обе версии без ошибок. Попытка получить ключ вар id
со значениями paramarray
EDIT 2 Даниэль, спасибо за все.
Имейте последующие вопросы по форматированию, задайте новый вопрос.
На странице appstats будут показаны запросы rpc, чтобы вы могли проверить поведение get/set memcache. –
@JoshJ Спасибо, это звучит полезно, и я попробую это. – PyGAE