incr如何与过期时间一起工作?

5 投票
2 回答
1026 浏览
提问于 2025-04-15 16:56

在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这个函数。

撰写回答