Google App Engine - Memcache过期

时间:2017-02-06 07:28:59

标签: 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分钟后该值不在缓存中,但在app引擎memcache文档中,它表示值不会被驱逐如下(因为时间只是一个可选参数)

  

add(key,value,time = 0,min_compress_len = 0,namespace = None)源集   一个键的值,iff项目尚未在memcache中。

     

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

     

value - 要设置的值。随便哪种。如果复杂,将被腌制。

     

时间 - 可选   到期时间,从当前时间开始的相对秒数   (最多1个月),或绝对的Unix纪元时间。默认情况下,项目   永不过期,但由于记忆压力,物品可能会被驱逐。   浮点值将向上舍入到最接近的整秒。   min_compress_len - 忽略兼容性选项。命名空间 - a   指定要在请求中使用的可选命名空间的字符串。返回   如果添加则为真。错误时出错。

我也在使用专用内存缓存,它说项目永远不会过期,但在我的情况下,当我设置时间时项目到期(例如:时间= 600s),为什么会这样?

1 个答案:

答案 0 :(得分:1)

来自How cached data expires(强调我的):

  

应用程序可以在存储值时提供到期时间,如   相对于添加值的时间或者相反的秒数   未来的绝对Unix纪元时间(从几秒钟开始)   1970年1月1日午夜)。 价值被驱逐不迟于此   时间,但由于其他原因可以提前驱逐。