memcache を使用してデータベースの負荷を軽減する方法を学ぼうとしています。そのため、キー (この場合は「エントリ」) が与えられたときにブログ投稿をキャッシュするcacheData関数があります。問題は、ブログに新しい投稿を作成してデータベース クエリを実行すると、新しい投稿がデータベースに追加されているにもかかわらず、値が返されないことです。データベース クエリの後にエントリが返されないのはなぜですか?
cacheData 関数:
def cacheData(key, update = False):
value = memcache.get(key)
if value is None or update:
logging.error("DATABASE HIT")
value = db.GqlQuery("select * from Entry order by date desc")
value = list(value) #returns 0 when entry is added...
logging.error("value has: " + str(len(value)) + " items")
memcache.set(key,value)
return value
そして、これはデータベースにデータを入力するメソッドです:
def post(self):
error = "You are missing a title or blog entry!"
title = self.request.get("subject")
blog = self.request.get("content")
if (title and blog):
blogEntry = Entry(title = title, blogText = blog)
blogEntry.put()
cacheData("entries", update = True)
self.redirect("/blog")
else:
self.renderPostPage(title = title, blog = blog, error = error)