How can I store Datastore Query to memcache in Go AppEngine?

huangapple go评论82阅读模式
英文:

How can I store Datastore Query to memcache in Go AppEngine?

问题

我正在使用Golang在Appengine上工作。

我在数据存储中有大约1000个实体。

当我查询所有实体(q.GetAll(...))时,数据存储读取操作数据存储小操作的使用率约为2%(1k的50k)。
当我使用KeysOnly()Project(..something...)时,情况是相同的。

我已经阅读了一些文章来解决这个问题,我必须将数据存储查询存储到memcache中
但是我找不到如何做到这一点。

那么,在Go AppEngine中,我如何将数据存储查询存储/检索到memcache中?

或者是否有其他方法可以减少数据存储读取/小操作的使用率?

我需要你的帮助。
谢谢。

英文:

I'm working on Appengine with Golang.

I have about 1000 entities on datastore.

When I query all entities(q.GetAll(...)), Datstore Read Operations or Datastore Small Operations run about 2% usage(1k of 50k).
It's same when I use KeysOnly() or Project(..something...).

I have read some articles to solve this, I have to store Datastore Query to memcache.
But I cannot find how to do that.

So how can I store/retrieve Datastore Query to/from memcache in Go AppEngine?

Or is there other way to decrease datastore read/small operation usage?

I need your help.
Thank you.

答案1

得分: 0

查询不会被缓存。如果你的实体很小,你可以使用投影查询来减少成本。请查看文章末尾以获取生成必要搜索索引的信息。

英文:

Queries are not cached. If your entity are small, you can reduce use a projection query and reduce to small costs. Check out the end of the article for information about generating the necessary search index.

答案2

得分: 0

最佳实践是使用KeysOnly()进行查询,并对每次调用datastore.Get()进行缓存。

算法如下:

  • 在添加实体后,通过其自身的键将其添加到缓存中
  • 在获取时,首先在缓存中检查
    • 如果不存在,则从数据存储中获取,并将其重新添加到缓存中
    • 如果存在,则直接从缓存中使用

如何使用内存缓存在文档中有描述。

英文:

The best practice is to make a query with KeysOnly() and caching each call datastore.Get() for the key.

The algorithm is as follows:

  • after adding entity, add it to the cache by her own key
  • in obtaining check it in cache
    • if no, then get out it from datastore and add it back into the cache
    • if there is use it from cache

How to use memcache described in the documentation.

huangapple
  • 本文由 发表于 2014年1月1日 00:46:27
  • 转载请务必保留本文链接:https://go.coder-hub.com/20860527.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定