假设我有以下代码:
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分钟?
文档提到了这一点,我在不同的环境中对此进行了测试,我很确定我得到了不同的结果.
好的,最后通过实验找到了我的答案......
事实证明,"Set" 确实延长了到期时间,它基本上与删除项目并再次使用新的到期设置相同.
但是,增量不会延长到期时间.如果你增加一个键,它会保留你在第一时间设置它时的原始到期时间.
小智 5
如果您只想延长特定键的到期时间而不是每次都重置数据,您可以只使用Memcached :: touch
需要注意的是,您必须根据上页中的注释启用二进制协议.
$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$memcached->touch('key', 120);
Run Code Online (Sandbox Code Playgroud)