过期时间

一些存储命令涉及向服务器发送一个过期值(相对于项目或客户端请求的操作)。在所有这些情况下,发送的实际值可能是 Unix 时间(自 1970 年 1 月 1 日以来的秒数,以整数表示),或者是从当前时间开始的秒数。在后一种情况下,此秒数不得超过 60*60*24*30(30 天的秒数);如果过期值大于该值,服务器将认为它是真实的 Unix 时间值而不是从当前时间开始的偏移量。

如果过期值为 0(默认值),则该项目永不过期(尽管它可能从服务器中删除以腾出空间存放其他项目)。

添加注释

用户贡献的注释 2 notes

valugi at gmail dot com
7 年前
设置过期时间并不意味着键将在该特定时间过期。我不确定后台发生了什么,是否有一个像垃圾收集器这样的进程来使键过期,但某些函数不会激活过期检查并返回键为有效,例如 `getAllKeys` 不是原子的,甚至会返回已过期的键。

$memcached = new Memcached();
$memcached->set('key','value',10);
//等待超过 10 秒
sleep(20);
$data = $memcached->getAllKeys();
var_dump($data); // 键仍然会列出
$key = $memcached->get('key'); // 将触发过期
i dot caught dot air at gmail dot com
6 年前
n 秒的 TTL 将在 n 到 n-1 秒之间过期,因为 memcache 内部不使用高分辨率时钟。

如果您使用非常短的 TTL,这一点很重要。

请参阅 https://github.com/memcached/memcached/issues/307
To Top