2013-01-18 28 views
7

पर काम नहीं कर रहा है, मैंने एक नए ऐप के लिए एनडीबी पर स्विच किया, जैसा कि मुझे समझ में आता है कि memcache समर्थन 'मुफ्त में' है।एनडीबी कैशिंग Google App Engine

तो मैं डेटासंग्रह में एक इकाई रख:

class MyStorage(ndb.Model): 
    pickled_data = ndb.BlobProperty() 

obj = MyStorage(parent=ndb.Key('top_level_key', 'second_level_key'), pickled_data = pickle.dumps(my_attr)) 
obj.put() 

अन्य अनुरोधों में मैं फिर जब App Engine पर नियोजित

obj = pickle.loads(MyStorage.query(ancestor = ndb.Key('top_level_key', 'second_level_key')).get().pickled_data) 

लेकिन यह परीक्षण में देरी का उपयोग कर पुनः प्राप्त मुझसे कहता है कोई कैशिंग है चल रहा है (जाहिर है कि पहले कॉल पर कोई भी उम्मीद नहीं थी, लेकिन बाद की कॉलों को गति दिखाई देनी चाहिए)।

मैं मेमकेचे व्यूअर की जांच करता हूं और सुनिश्चित करता हूं कि प्रत्येक मीट्रिक के नीचे शून्य है। तो मुझे स्पष्ट रूप से मुफ्त एनडीबी कैशिंग के बारे में कुछ नहीं मिल रहा है। क्या कोई यह बता सकता है कि यह क्या है?

उत्तर

14

एनडीबी केवल .get_by_id() (या .get() कुंजी पर) का उपयोग करते समय कैश से पढ़ेगा। जब आप .query() का उपयोग करते हैं तो इसका उपयोग नहीं किया जाएगा।