我有一个奇怪的问题。在一个任务我从数据库中提取数据,并将其写入到异步内存缓存:除了写入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