特定日期的Memcache对象到期

时间:2013-02-03 22:47:14

标签: python memcached

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

cache.set(string, 1, 86400)

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

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

2 个答案:

答案 0 :(得分:2)

查看documentation,我们看到expiration参数解释为:

  

可选的到期时间,从当前时间(最多1个月)或绝对Unix纪元时间的相对秒数。默认情况下,项目永不过期,但由于内存压力,项目可能会被逐出。浮点值将向上舍入到最接近的整秒。

所以基本上如果你输入的数字少于2592000,它被解释为相对时间。所以数字86400将被解释为 now 的86400秒(一天),即它被设置的时间。

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

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

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

答案 1 :(得分:0)

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

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