我正在为我的应用程序使用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),为什么会这样?
答案 0 :(得分:1)
来自How cached data expires(强调我的):
应用程序可以在存储值时提供到期时间,如 相对于添加值的时间或者相反的秒数 未来的绝对Unix纪元时间(从几秒钟开始) 1970年1月1日午夜)。 价值被驱逐不迟于此 时间,但由于其他原因可以提前驱逐。