Python 应用程序引擎和memcache的白痴指南
我正在努力寻找一个关于在AppEngine中使用memcache的好教程或最佳实践文档 我对文档中的级别表示非常满意。通过ID获取对象,首先检查memcache,但我不清楚以下内容: 如果缓存查询,是否有可接受的方法确保在更新该查询中存储的对象时清除/更新缓存 使用ReferenceProperty的效果如何?如果缓存对象是具有条形引用的Foo对象。我的foo.bar也在memcache中,如果它从我的应用程序的其他部分更新,则需要清除它 我不希望在这里得到答案(除非你觉得自己特别慷慨!),但我会非常感激地收到我能读到的东西 如果缓存查询,是否存在 确保 缓存被清除/更新时 存储在该查询中的对象是 更新Python 应用程序引擎和memcache的白痴指南,python,google-app-engine,memcached,Python,Google App Engine,Memcached,我正在努力寻找一个关于在AppEngine中使用memcache的好教程或最佳实践文档 我对文档中的级别表示非常满意。通过ID获取对象,首先检查memcache,但我不清楚以下内容: 如果缓存查询,是否有可接受的方法确保在更新该查询中存储的对象时清除/更新缓存 使用ReferenceProperty的效果如何?如果缓存对象是具有条形引用的Foo对象。我的foo.bar也在memcache中,如果它从我的应用程序的其他部分更新,则需要清除它 我不希望在这里得到答案(除非你觉得自己特别慷慨!),但我
通常,如果主数据库中的值不在缓存中,则使用条件从主数据库中检索该值来包装读取。只要在写入数据时包装更新以填充缓存即可。如果您需要结果尽可能最新,如果您不担心它过期,只需设置一个足够低的到期时间,以便应用程序必须经常从主数据库重新请求数据。关于参考属性,假设MainModel和RefModel的引用属性“ref”指向MainModel实例。无论何时调用ref_model.ref,它都会执行数据存储get操作,并从数据存储中检索对象。它不会以任何方式与memcache交互。一种简单的方法是搜索任何datastore put()调用并在调用之后设置memcache。接下来,请确保在尝试数据存储查询之前从memcache获取数据 写入数据存储后设置memcache:
data.put()
memcache.set(user_id, data)
在执行数据存储查询之前,请尝试从memcache获取数据:
data = memcache.get(user_id)
if data is None:
data = Data.get_by_key_name(user_id)
memcache.set(user_id, data)
使用Memcache可显著降低应用程序引擎成本。关于我如何优化应用程序引擎