Google app engine 谷歌应用引擎-Memcache过期

Google app engine 谷歌应用引擎-Memcache过期,google-app-engine,caching,memcached,Google App Engine,Caching,Memcached,我在应用程序中使用Google App Engine,为了降低数据存储成本,我广泛使用memcache 下面给出的代码片段示例 val = memcache.get('forum') if val is None: val = 'stackoverflow' memcache.add('forum', val, time=600) return val 我设置的过期时间为10分钟(600/60=10分钟),10分钟后该值不在缓存中,但应用程序引擎memcache中的

我在应用程序中使用Google App Engine,为了降低数据存储成本,我广泛使用memcache

下面给出的代码片段示例

val = memcache.get('forum')
if val is None:
      val = 'stackoverflow'
      memcache.add('forum', val, time=600)

return val 
我设置的过期时间为10分钟(600/60=10分钟),10分钟后该值不在缓存中,但应用程序引擎memcache中的文档表示不会按如下方式逐出这些值(因为时间只是一个可选参数)

添加(键、值、时间=0、最小压缩长度=0、命名空间=无)源集 键的值iff项不在memcache中

参数 键——要设置的键。有关详细信息,请参阅客户机上的文档

value——要设置的值。任何类型。如果复杂,将被腌制

时间——可选 过期时间,从当前时间算起的相对秒数 (最多1个月)或绝对时间。默认情况下,项目 永不过期,尽管项目可能会由于内存压力而被逐出。 浮点值将向上舍入到最接近的整秒。 min_compress_len--忽略兼容性选项。名称空间——一个 指定要在请求中使用的可选命名空间的字符串。退换商品 如果添加,则为True。错误为False

我也在使用一个专用的memcache,它说这些项目永远不会过期,但在我的情况下,当我设置时间(例如:time=600s)时,这些项目就会过期,为什么会这样呢???

来自(我的重点):

应用程序可以在存储值时提供过期时间,如下所示 相对于添加值的时间的秒数,或 未来的绝对Unix纪元时间(从 1970年1月1日午夜)该值不迟于此被逐出 时间,但由于其他原因,它可能会被提前收回


您包含的文档文本表示默认值是永不过期,但是您提供了一个时间,所以它会过期。换句话说,因为您提供了时间参数,所以您正在覆盖默认行为。谢谢Tim,我认为这是一个可选参数——尽管我们指定了它——项目只会由于内存压力而过期。你确定吗,如果我们指定了时间-项目将在该时间后到期。由于我的谷歌应用程序引擎成本很高——我正在寻找一种优化的方法,将所有数据移动到memcache,以获得更高的1天过期时间,我能知道这样做是否是个好主意吗?你在最初的问题中说:“但在我的情况下,当我设置时间(例如:time=600s)时,这些项目过期,为什么会这样呢?”从您最初的描述来看,它正在按文档记录的方式工作。排除该选项将意味着它永远不会过期。是的,我读过关于它的文章,如果我们提供一个过期时间-该值将在时间结束时被逐出,因为我的谷歌应用程序引擎成本相当高-我正在寻找一种优化它的方法,将所有数据移动到memcache以延长1天的过期时间,我能知道这样做是否是个好主意吗?您的数据库成本会下降,但memcache成本会上升$根据您的数据结构及其使用模式(缓存命中率、项大小等),1.44/GB/天(相当于2.4M实体读取)可能值得(或不值得)。在我的例子中,我更喜欢常规memcache(免费),但只选择缓存的(高度使用的)数据,没有过期时间(如果合适)。