我有一個奇怪的問題。在一個任務我從數據庫中提取數據,並將其寫入到異步內存緩存:除了寫入Memcache的1MB還有其他限制嗎?
ke = database.Events.query(database.Events.eventid.IN(eventslist))
eventskeys = ke.fetch(len(eventslist),keys_only = True)
data = ndb.get_multi(eventskeys)
eventsdic = {}
for event in data:
eventsdic.update({event.eventid: event.participants})
client = memcache.Client()
rpc = memcache.create_rpc()
response = client.set_multi_async(eventsdic, time=3600, rpc=rpc)
的事件列表中有20個項目。我這樣做約500個項目分散在隊列中的不同任務。
我沒有收到任何錯誤。但是我注意到,在第一次嘗試之後,500個事件中的大約300個確實存在於內存緩存中。如果我只對事件進行了2-3次重試,這些事件現在還不在memcache中,但在一段時間後,我有100%的memcache。
但我真的不明白,爲什麼它不適用於第一次嘗試?
謝謝 - 但是數據在被寫入memcache之後幾秒鐘就被驅逐了?這個任務已經是我的後備,恢復了我發現不存在的memcache數據。 – 2013-02-08 12:59:15
我想它可以,如果你加入*加載*的內容,它會驅逐它的一部分,如果它的空間不足。事實是,它確實有點不透明。嘗試做一些測試,而不是500與50試試 - 看看它是否在那之後。即便如此,無論你發現,我想可能會隨着資源轉移而發生變化。 – 2013-02-08 13:01:42
另請注意,它從未被提及*給定應用程序有多少* memcache可用? – 2013-02-08 13:02:20