0

GAE で python を使用して非常にシンプルなアプリを設計しました。Google データストアを使用しています。

私のアプリでは、この方法でデータ ストアから読み取ります。

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

次の方法でデータをデータストアに保存します。

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)

しかし残念ながら、私のアカウントのデータストア読み取り操作のクォータは 1 時間以内に超えてしまいました。

memcache について聞いたことがあります。mem キャッシュを使用してこれらの読み取り/書き込み操作を最適化する方法を知りたいですか?

4

1 に答える 1

0

memcache の優れた入門ガイドがここにあります。

データのチャンクが必要な場合は、memcache で見つけようとします。そこにない場合は、通常の db ルックアップを実行し、後で使用できるように結果を memcache に格納します。Memcache は、「最近使用されていない」(LRU) エビクション ポリシーに従います。これは、エントリを追加しようとしたときにキャッシュがストレージの制限に達した場合、最も長く変更されていないエントリが削除されることを意味します。

そのドキュメントからの引用:

Memcache は通常、次のパターンで使用されます。

  • アプリケーションは、ユーザーまたはアプリケーションからクエリを受け取ります。
  • アプリケーションは、そのクエリを満たすために必要なデータが 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
于 2013-07-16T18:48:00.060 に答える