我想将memcache对象的到期时间设置为特定日期。
cache.set(string, 1, 86400)
上述声明允许我将其设置为一天,但如果日期发生变化则不会过期。我可以处理的一种方法是计算当天剩余的秒数并将其作为变量提供。
我想知道是否有更简单/有效的方法来做到这一点。
答案 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)
每天至少每天都在变化,不是吗?客户端或服务器必须指定哪一个与任何给定请求相关。对于客户端应用程序来说,这通常是一项更好的任务。
请注意,您可以指定绝对时间戳,这样可以更容易计算到期时间,因为您可以在一整天(或至少一小时)内重复使用它。