Memcache对象在特定日期过期
我想给memcache里的对象设置一个到期时间,指定到某个具体的日期。
cache.set(string, 1, 86400)
上面的说法让我可以设置到期时间为一天,但如果日期改变了,它就不会过期。我可以通过计算一天里剩下的秒数,然后把这个数作为变量来处理这个问题。
我在想有没有更简单或者更有效的方法来做到这一点。
2 个回答
0
一天的时间每小时都会变化,对吧?所以在每次请求中,客户端或服务器必须说明哪个时间是相关的。通常来说,这个任务更适合由客户端来处理。
需要注意的是,你可以指定绝对时间戳,这样可以更容易计算过期时间,因为你可以在一天内(或者至少一个小时内)重复使用这个时间戳。
5
根据文档,我们可以看到过期时间的参数是这样解释的:
可选的过期时间,可以是从当前时间起的相对秒数(最多1个月),也可以是一个绝对的Unix时间戳。默认情况下,项目不会过期,但由于内存压力,可能会被清除。小数值会被四舍五入到最接近的整数秒。
简单来说,如果你输入的数字小于2592000,它就会被理解为一个相对时间。所以,数字86400会被理解为从现在开始的86400秒(也就是一天)。
如果你想表示一个绝对时间,输入的数字需要大于这个值。获取Unix时间戳的方法有很多种,这里有一些。但简单来说,你可以这样做:
time_tuple = (2013, 2, 15, 0, 0, 0,0,0,0)
timestamp = time.mktime(time_tuple)
cache.set(string, 1, timestamp);
你的初步想法是对的。你可以找到现在的时间戳和你想要的日期的时间戳,然后只需提供它们之间的差值,这样也是可以的。