2024年PHP开发者大会日本站

过期时间

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

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

添加注释

用户贡献的注释 2条注释

4
valugi at gmail dot com
8年前
设置过期时间并不意味着键会在那个特定时间过期。我不确定后台发生了什么,是否存在像垃圾回收器这样的过期键的过程,但有些函数不会激活过期检查并返回键为有效,例如`getAllKeys`不是原子的,即使是过期的键也会返回。

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

如果您使用非常短的TTL,则需要考虑这一点。

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