0

我正在使用使用Python ndb数据存储API的Google应用引擎应用程序。 由于我想优化应用程序,我想知道缓存数据而不是查询数据存储,如链接http://blog.initlabs.com/post/16359268329/how-i-reduced-google-app-engine-costs-by-75中所述。Google ndb和memcache

反正据我了解NDB已经透明地使用内存缓存https://cloud.google.com/appengine/docs/python/ndb/

我看到读操作量高,我看不出为什么因为数据不经常更换。

使用ndb时显式使用memcache是​​没有意义的吗?

更新

虽然我刷新同一页,我总是看到appstat

@0ms memcache.Get real=6ms api=0ms cost=0 billed_ops=[] 
@7ms datastore_v3.Get real=12ms api=0ms cost=0 billed_ops=[] 
@22ms datastore_v3.RunQuery real=16ms api=0ms cost=0 billed_ops=[] 
@41ms datastore_v3.RunQuery real=12ms api=0ms cost=0 billed_ops=[] 
@92ms datastore_v3.RunQuery real=71ms api=0ms cost=0 billed_ops=[] 

这让我想起了memcache.Get(第一排)失败这样的事情。我对吗?怎么会这样?

+0

您如何看待读取操作?那些响应时间是多少? –

+0

我看到百分比。我现在是唯一的用户,并在几个小时内达到10%。无论如何,我正在介绍AppStats来进行测量 – lowcoupling

+0

尝试使用此功能进行分析:https://cloud.google.com/appengine/docs/python/tools/appstats –

回答

1

我对你的要求不清楚,所以让我改一下你的问题只是为了安全起见:

你问为什么,如果你把你的数据放入内存缓存,可在内存缓存失败?这可能是因为memcache自己刷新了,因为它可以随机做。

如果你看到每一次,那么确实可能是错误的。但是我看到它你创建了一个数据存储库,首先它并不存在于内存缓存中。