0

Pythonとjinja2を使用してGoogleAppEngineでWebアプリケーションを構築しています。私はユーザーが投稿を書くことができるウェブサイトを持っています、そして私は15の主要なカテゴリーを持っていて、それらのそれぞれは4つの部門を持っています。リーダーとポスターの比率が20:1であるため、memcacheを実装したいのですが、60の異なるキーを作成せずに実装するにはどうすればよいですか?私はそれをそのようにすべきですか?または、データベースにアクセスして結果を並べ替え、次のようにそれらの結果を取得する関数にいくつかのパラメーターを設定する必要があります。

def posts_cache(update = False, category = None, sport = None):
        key = 'main'
        posts = memcache.get(key)
        if posts is None or update:
                logging.error("DB QUERY")
                posts = db.GqlQuery("SELECT * "
                                        "FROM Post "
                                        "ORDER BY created DESC "
                                        "LIMIT 100",
                                         key)
                posts = list(posts)
                memcache.set(key, posts)
        if category and sport:
            sportcatlist = []
            for post in posts:
                     if post.category == category:
                         if post.sport == sport:
                             sportcatlist.append(post)
            return sportcatlist
        elif category:
            categorylist = []
            for post in posts:
                     if post.category == category:
                            categorylist.append(post)
            return categorylist
        elif sport:
            sportlist = []
            for post in posts:
                     if post.sport == sport:
                            sportlist.append(post)
            return sportlist
        return posts

それとも、それを行うためのより効率的な方法はありますか?

4

1 に答える 1

1

他のすべてのmemcachedデータは引き続き配置されているため、他のリクエストはmemcacheのみで処理されます。appengineは、memcacheに保存できるデータ量の制限を適用するため、古くてまれなヒットアイテムを削除し、頻繁に使用します。これはまさに必要なものであり、完全に適切にスケーリングされます。説明したアプローチでは、これは得られません。それが役に立てば幸い。

于 2012-07-07T16:26:16.847 に答える