设置已存在的memcached密钥是否会刷新到期时间?

Dan*_*ola 11 memcached

假设我有以下代码:

Memcached->set('key', 'value', 60); (expire in one minute)

while (1) {
    sleep 1 second;
    data = Memcached->get('key');
    // update data
    Memcached->set('key', data, 60);
}
Run Code Online (Sandbox Code Playgroud)

在循环60次迭代之后,密钥是否会过期,当读取它时,我会得到一个NULL?或者连续设置是否会在最后一次设置后每次持续推迟到期时间1分钟?

文档提到了这一点,我在不同的环境中对此进行了测试,我很确定我得到了不同的结果.

Dan*_*ola 7

好的,最后通过实验找到了我的答案......

事实证明,"Set" 确实延长了到期时间,它基本上与删除项目并再次使用新的到期设置相同.

但是,增量不会延长到期时间.如果你增加一个键,它会保留你在第一时间设置它时的原始到期时间.

  • 你有答案来源吗? (3认同)

小智 5

如果您只想延长特定键的到期时间而不是每次都重置数据,您可以只使用Memcached :: touch

需要注意的是,您必须根据上页中的注释启用二进制协议.

$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$memcached->touch('key', 120);
Run Code Online (Sandbox Code Playgroud)