【问题标题】:GAE Python Optimize Datastore Read Operations Quota ExceedeGAE Python 优化数据存储区读取操作配额已超出
【发布时间】:2013-07-16 18:34:51
【问题描述】:

我在 GAE 上使用 python 设计了一个非常简单的应用程序。它使用谷歌数据存储。

在我的应用程序中,我以这种方式从数据存储中读取数据:

user_db = db.GqlQuery("SELECT * FROM Names WHERE name=:1", key) 
user = user_db.get()

以这种方式将数据存储在datasotre中:

class Names(db.Model):
    name = db.StringProperty(required=True)
    id = db.StringProperty(required=True)
    result = db.StringProperty(required=True)
e = Names(name=key,id=23,result=test)

但不幸的是,我帐户的数据存储区读取操作配额在一小时内就被超出了。

我听说过一些关于内存缓存的事情。所以我想知道如何使用内存缓存优化这些读/写操作?

【问题讨论】:

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


    【解决方案1】:

    memcache here 有一个很好的介绍指南。

    当您需要一块数据时,您会尝试在内存缓存中找到它。如果它不存在,则进行正常的数据库查找,并将结果存储在内存缓存中以供以后使用。 Memcache 遵循“最近最少使用”(LRU) 驱逐策略。这意味着,当您添加条目并且缓存已达到您的存储限制时,将删除最长未触及的条目。

    引用该文档:

    Memcache 通常与以下模式一起使用:

    • 应用程序接收来自用户或应用程序的查询。
    • 应用程序检查满足该查询所需的数据是否在内存缓存中。
      • 如果数据在 memcache 中,应用程序将使用该数据。
      • 如果数据不在 memcache 中,应用程序会查询数据存储并将结果存储在 memcache 中以供将来请求。

    下面的伪代码代表一个典型的 memcache 请求:

    def get_data():
        data = memcache.get('key')
        if data is not None:
            return data
        else:
            data = self.query_for_data()
            memcache.add('key', data, 60)
            return data
    

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      相关资源
      最近更新 更多