我正在使用Memcached添加密钥,如下所示:
$valueToStore = time(); // some number
$success = $memcached->add( 'test_key', $valueToStore, 20 ); // cache for 20 seconds
但是当我在不同的会话中调用它时,它总是成功,即使在20秒之后也是如此。根据{{3}}的文档,它应该返回FALSE直到密钥到期(因为密钥已经存在)。
我在单个开发服务器上运行,并且有足够的可用缓存空间。知道可能会发生什么吗?
php -v
返回:PHP 5.5.9-1ubuntu4.3
memcached版本2.1.0
libmemcached版本1.0.8。
答案 0 :(得分:0)
如果您使用Memcache
类或Memcached
类,则需要区分。你的缓存设计有点奇怪。您应该检查缓存以首先查看该项目是否存在。如果该项目没有,则存储它。同样Memcache
在使用boolen类型作为第三个参数时有一些奇怪的行为。你应该MEMCACHE_COMPRESSED
。我认为您使用的是Memcache
。
说明如何解决问题:
$in_cache = $memcached->get('test_key');
if($in_cache)
return $in_cache;
else
$valueToStore = time();
$memcached->add('test_key', $valueToStore, MEMCACHE_COMPRESS, 20);