首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了写入Memcache的1MB之外,是否还有其他限制?

除了写入Memcache的1MB之外,是否还有其他限制?
EN

Stack Overflow用户
提问于 2013-02-08 20:46:57
回答 1查看 88关注 0票数 0

我有个奇怪的问题。在一个任务中,我从数据存储中获取数据,并将其异步写入memcache:

代码语言:javascript
复制
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个真正出现在memcache中。如果我只对memcache中还没有的事件进行2-3次重试,一段时间后我就会100%地在memcache中。

但我真的不明白,为什么它在第一次尝试时不起作用?

EN

回答 1

Stack Overflow用户

发布于 2013-02-08 20:54:04

这可能是因为memcache“监视”您的数据。经常使用的项目不太可能被逐出。它(据我所知)不是简单的FIFO类型的系统

对我来说,这并不是一个“问题”,因为如果我把一些东西放到memcache中,当我稍后请求它时,它并不在那里。我将使用我加入的后备机制来处理这种情况。您不能简单地假设当您请求任何东西时,它都会在memcache中。

https://developers.google.com/appengine/articles/scaling/memcache

权衡之处在于,保存在memcache中的数据是暂时的,并且会在系统耗尽memcache空间时被逐出。在极少数情况下,可以一次清除所有memcached数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14772923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档