2

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

cache.set(string, 1, 86400)

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

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

4

2 回答 2

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);

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

于 2013-02-06T00:35:08.103 回答
0

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

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

于 2013-02-04T00:28:03.137 回答