July 31, 2010

Markdown Wiki (3) Memcache

  1. ユーザーサービス
  2. データストア
  3. Memcache

Memcache

今回勉強がてらにやってみたことの最後は Memcache。

デモサイト(注: 今は削除済み)では、常に右側のメニューにページ一覧が出ているので、そのリストを取得する時に cache を利用。以下、コードの抜粋。

from django.utils import simplejson
from google.appengine.ext import db
from google.appengine.api import memcache
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class PageList(webapp.RequestHandler):
    def get(self):
        permission = Permission()
        data       = []

        if permission.get():
            pagelist = memcache.get("pagelist")

            if pagelist is not None:
                data = pagelist
            else:
                query = WikiPage.all()
                query.order("title")

                for record in query:
                    data.append({"keyname":record.key().name(), "title": record.title })

                memcache.add("pagelist", data, 3600)

        self.response.headers[''Content-Type''] = ''text/plain''
        self.response.out.write(simplejson.dumps(data))

呼び出す側の JavaScript は、単に GET してるだけ。

var Connect = YAHOO.util.Connect;

var oCallback = {
    success: _create
};
Connect.asyncRequest("GET", "/wiki/list", oCallback);