似乎 Memcached 的数据按预期过期,但密钥本身永不过期。为什么值为零后键仍然存在?当我运行此代码时:
$frontCache = new Phalcon\Cache\Frontend\Data(array(
"lifetime" => 30
));
//Create the Cache setting memcached connection options
$cache = new Phalcon\Cache\Backend\Memcache($frontCache, array(
'host' => 'localhost',
'port' => 11211,
'persistent' => false
));
//Cache arbitrary data
$myNewRandomKey = generateNewRandomKey();
$cache->save($myNewRandomKey, array(1, 2, 3, 4, 5));
取自http://docs.phalconphp.com/en/latest/api/Phalcon_Cache_Backend_Memcache.html
我可以成功地将数组保存在 $myNewRandomKey 键下。然后我在 30 秒超时后运行此代码:
$keys = $cache->queryKeys();
print_r($keys);
并看到键仍然存在,尽管数据为 NULL,但在超时到期之前已填充该键。这对我来说似乎只对了一半。钥匙也应该已经清除了。
但是,如果我运行 $cache->delete($myNewRandomKey); 密钥将完全擦除。不一致!
底线:如果密钥没有过期或者 memcached 有问题,那么它们会随着时间的推移而增长和增长,直到导致另一种类型的头痛——系统管理员的头痛?
Stats:
Windows 7 64bit
Apache 2.4.4
PHP 5.4.12
Memcached 1.4.4-14-g9c66c0
Memcache Apache extension version 2.2.7-5.4-VC9-x64 from http://www.anindya.com/category/windows/
Client: Phalcon PHP
这些是版本,但我希望这与问题无关,并且我的期望是错误的。
向所有 SO'ers 干杯!
SL