我想了解ndb如何使用memcache。從我到目前爲止收集的請求中,get()應該檢查實體是否已經在memcache中,如果它從memcache中檢索它,並且因此避免碰到數據存儲區。如果實體不在memcache中,則向數據存儲發出請求,並更新memcache。ndb意外的額外調用memcache
將Appstats我得到的情況下,下面的數字當實體是在數據存儲,但它尚未在內存緩存:
memcache.Get 2
memcache.Set 2
datastore_v3.Get 1
我對這種情況下的期望是:
memcache.Get 1
memcache.Set 1
datastore_v3.Get 1
這是我的代碼:
import webapp2
from google.appengine.ext import ndb
from models import User
class IndexPage(webapp2.RequestHandler):
def get(self):
user_key = ndb.Key(User, 'user123')
u = user_key.get()
以下是來自Appstat的屏幕截圖:
那麼爲什麼還有一個額外的Get和一個額外的設置請求memcache?
您可以展開它們並查看正在獲取/設置的內容 – marcadian
@marcadian展開節點向您顯示啓動了內存緩存請求的每個網址的計數 –