GAE Python NDB 数据存储 - 不需要 memcache.set?
GAE Python NDB Datastore - No need for memcache.set?
文档 (https://cloud.google.com/appengine/docs/python/ndb/) 指出
NDB uses Memcache as a cache service for "hot spots" in the data
我现在只使用 memcache
如下:
memcache.set(key=(id), value=params, time=0)
它经常过期(自动刷新),所以我想使用 NDB 数据存储。
我以为我必须始终将键值放在 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)
吗?
感谢您的耐心等待。
编辑 - 我试过的:
作为测试,我尝试了这样的事情:
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()
两个版本都出错了。
尝试使用 paramarray
的值获取 var id
的键
编辑 2 丹尼尔,谢谢你所做的一切。
有跟进格式问题,会问一个新问题。
是;请参阅 ndb caching 上的完整文档。基本上,每次写入都缓存在请求本地上下文缓存和主 memcached 存储中;在回退到实际数据存储之前,按键获取将首先在两个缓存中查找。
编辑 我不明白为什么你认为你的例子会起作用。您定义了一个带有 content
属性 的模型,但随后尝试在其上设置 name
和 value
属性;自然会失败。
您应该阅读 ndb documentation,它很好地介绍了如何使用模型 class。
文档 (https://cloud.google.com/appengine/docs/python/ndb/) 指出
NDB uses Memcache as a cache service for "hot spots" in the data
我现在只使用 memcache
如下:
memcache.set(key=(id), value=params, time=0)
它经常过期(自动刷新),所以我想使用 NDB 数据存储。 我以为我必须始终将键值放在 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)
吗?
感谢您的耐心等待。
编辑 - 我试过的:
作为测试,我尝试了这样的事情:
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()
两个版本都出错了。
尝试使用 paramarray
id
的键
编辑 2 丹尼尔,谢谢你所做的一切。
有跟进格式问题,会问一个新问题。
是;请参阅 ndb caching 上的完整文档。基本上,每次写入都缓存在请求本地上下文缓存和主 memcached 存储中;在回退到实际数据存储之前,按键获取将首先在两个缓存中查找。
编辑 我不明白为什么你认为你的例子会起作用。您定义了一个带有 content
属性 的模型,但随后尝试在其上设置 name
和 value
属性;自然会失败。
您应该阅读 ndb documentation,它很好地介绍了如何使用模型 class。