2013-02-03 43 views
0

我想将memcache对象的到期时间设置为特定日期。特定日期的Memcache对象到期

cache.set(string, 1, 86400) 

以上声明允许我将其设置为一天,但如果日期更改,它不会过期。我可以处理的一种方法是计算当天剩余的秒数并将其作为变量提供。

我想知道是否有更简单/有效的方法来做到这一点。

回答

0

这一天至少每天都会变化,不是吗?客户端或服务器必须指定哪一个与任何给定请求相关。对于客户端应用程序而言,这通常是更好的任务。

请注意,您可以指定绝对时间戳,因为您可以在整个一天(或至少一个小时)内重复使用该时间戳,因此可以更容易计算到期时间。

+0

准确地说,我想指定绝对时间戳到午夜格林尼治标准时,而我在memcache中设置对象。我没有找到相同的语法。感谢您分享。谢谢。 – satp

1

综观documentation,我们看到,期满参数作为说明:

可选的期满时间,无论是从当前时间秒相对数(高达1个月),或绝对Unix时间戳时间。默认情况下,物品永不过期,但物品可能因内存压力而被逐出。浮点值将四舍五入到最接近的整数。

所以基本上,如果你把在那里数小于2592000,它被解释为一个相对时间。因此,数字86400将从现在的被解释为86400秒(一天),这是它被设置的时间。

看起来你打算使用比这个更大的数字来表示一个绝对时间。有一个variety获取unix时间戳的方法。但很简单,你可以这样做:

time_tuple = (2013, 2, 15, 0, 0, 0,0,0,0) 
timestamp = time.mktime(time_tuple) 
cache.set(string, 1, timestamp); 

你最初的想法是正确的。你可以找出现在的时间戳,以及你想要的日期的时间戳,并提供差异,这也是同样的。