incr如何与过期时间一起工作?
在memcached(appengine的API实现)中,过期时间是怎么和incr()这个函数一起工作的呢?incr()这个函数没有时间参数,但如果我用另一个调用来添加这个键,而不是使用initial_value参数,像这样:
memcache.add('testcounter', 0, time=60*90)
newcnt = memcache.incr('testcounter')
那么testcounter会在90分钟后过期吗?不管我在这段时间内是否再次调用这个函数?
2 个回答
1
过期时间和增加次数没有关系。
无论你增加多少次,这个对象在你添加后最多会在90秒内从缓存中消失。
(当然,它也可能会更早过期)
4
在GAE的memcache概述中,他们提到:
“当一个值被存储时,应用可以提供一个过期时间,这个时间可以是一个相对于值被添加时的秒数,或者是一个将来的绝对Unix时间(从1970年1月1日午夜开始的秒数)。这个值会在这个时间之前被移除,不过它也可能因为其他原因被移除。” 这里没有提到修改的情况。
如果你查看google.appengine.api.memcache.init.py中的memcache代码,你会发现无论是在incr还是在_incrdecr中,都没有调用set_expiration_time这个函数。