【问题标题】:GAE memcache lifetime is very lowGAE memcache 生命周期非常低
【发布时间】:2013-03-06 19:50:54
【问题描述】:

根据文档,memcache 单元的最长生命周期为一个月,除非由于服务器内存容量问题而被删除。

我的应用程序将 {'customer_id':'customer_name'} 存储在 memcache 中(1600 多个项目),用于自动完成和客户索引需求。

代码如下:

memcache.add('keys', keys, time=86400) #if 'keys' is absent, then all memcache items are regenerated.
memcache.add_multi(names, time=86500, key_prefix='customer_id_')

问题是我的大部分条目都会在一个小时左右过期,只剩下 10 或 11 个条目。文档还说,如果没有设置时间,memcache 项的默认生命周期是一小时。

我是否错误地设置了 memcache 的生命周期(如果是这样,为什么它会留下 10 个项目)或者 google memcache 对于 11 个以上的项目是否不可靠(在这种情况下我应该怎么做?以某种方式将这些数据存储在 XML 中?) ?

【问题讨论】:

  • 86400 秒只有一天,所以无论如何都不会超过这个时间。
  • 我的意思是他们有一天。谷歌配额每 24 小时重置一次;)

标签: google-app-engine memcached lifetime


【解决方案1】:

我的安静应用的当前统计数据显示,它可以轻松容纳数百个项目几个小时:

Item count:         285 item(s)
Total cache size:   5462609 byte(s)
Oldest item age:    11 hour(s) 38 min(s) 29 second(s)

如果您有 1600 个项目并且一个项目(键+数据)的大小小于 500 字节,我建议将它们全部存储在一个单独的内存缓存条目中作为字典或其他东西。

【讨论】:

  • 我的统计数据显示,我丢失了 1400 多件物品,因为它们是在 7 分钟前生成的。你在使用订阅吗?另外,添加 dict() 作为 memcache 值是我的第一个想法(好吧,它是第二个,第一个是添加一个 db 范围,但结果是> 1MB),但它引发了一些(pickle?)错误。所以我认为它不能完成。在尝试用谷歌搜索“为什么”与你争论之后,我在少量数据上尝试了它并且它有效......:现在要测试所有记录。
  • hmm... 现在将整个 1600 项 dic() 添加为一个内存缓存项可以正常工作。上次一定是做错了什么。谢谢!
猜你喜欢
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
相关资源
最近更新 更多