【问题标题】:Google App engine memcached designGoogle App 引擎 memcached 设计
【发布时间】:2012-06-26 05:02:37
【问题描述】:

我是 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());
        }

【问题讨论】:

    标签: java google-app-engine memcached google-cloud-datastore


    【解决方案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 中读取数据,然后将数据写入 内存缓存

    例如:

    从内存缓存中读取:-

     arts = top_arts()
    

    写入数据库时​​:-

    #write your entry in database
    <some database code>
    #update memcache with this new entry
    top_arts(update=True)
    

    【讨论】:

    • 基本上,我使用的是 Java,但不会有太大的不同。我会试试看。
    • 在java中,似乎并不简单。我希望对作为 JDO 对象的数据存储查询结果进行内存缓存,但我无法对其进行序列化。对此有何建议?
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多