2

我是 GAE 内存缓存的新手,我需要帮助。基本上,我有一个数据存储超过了数据存储读取操作限制,因为我没有使用内存缓存。我的数据存储区写入次数最少,但读取次数多,每次写入时,它都应该可供读取。因为,该网站已经启动,我需要一个快速的解决方案,所以我需要在这方面的设计帮助。所以问题是,每当数据存储区中有写入时,新条目都应该被 memcached。我想知道的另一件事是如何将数据存储复制到内存缓存。同时,我正在研究它,但由于该站点已启动,因此我在这里没有任何代码就在这里询问。

谢谢

更新:

Java 代码如下所示:

        MemcacheService memcache = MemcacheServiceFactory.getMemcacheService();
        if(memcache.contains("LocationInfo"))
        {
            JSONArray js = new JSONArray((String)memcache.get("LocationInfo"));
            result = new ArrayList<LocationInfo>();

            for(int i = 0; i < js.length(); i++)
            {
                JSONObject jso = (JSONObject)js.get(i);
                LocationInfo loc = new LocationInfo(jso);
                result.add(loc);
            }
        }
        else
        {
           q1= pm.newQuery(LocationInfo.class);
           q1.setFilter(filter);
           result = (List<LocationInfo>)q1.execute();
           JSONArray js = new JSONArray();
            for(LocationInfo loc : result)
            {
                js.put(loc.toJSON());
            }
            memcache.put("LocationInfo", js.toString());
        }
4

1 回答 1

1
from google.appengine.ext import db
from google.appengine.api import memcache

def top_arts(update = False):
  key = 'top'

  #Getting arts from memcache
  arts = memcache.get(key)
  #Check if key is defined in memcache
  #or an update has been invoked
  if update or not arts:

      #Querying the Google Data store using GQL
      arts = db.GqlQuery('SELECT * from Art ORDER BY created DESC LIMIT 10')
      memcache.set(key, arts)

  return arts

您可以使用相同的函数从 memcache 中读取数据,然后将数据写入 memcache

例如:

从内存缓存中读取:-

 arts = top_arts()

写入数据库时​​:-

#write your entry in database
<some database code>
#update memcache with this new entry
top_arts(update=True)
于 2012-06-26T05:40:37.787 回答