【发布时间】:2016-07-03 12:41:16
【问题描述】:
文档 (https://cloud.google.com/appengine/docs/python/ndb/) 指出
NDB 使用 Memcache 作为数据中“热点”的缓存服务
我现在只使用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 的键
EDIT 2丹尼尔,谢谢你所做的一切。
有后续格式化问题,将提出一个新问题。
【问题讨论】:
-
appstats 页面将显示 rpc 请求,以便您验证 memcache 获取/设置行为。
-
@JoshJ 谢谢,这听起来很有用,我会试试的。
标签: python google-app-engine google-cloud-datastore app-engine-ndb