【发布时间】:2016-11-11 08:04:56
【问题描述】:
我正在使用 memcache 来存储 Zend_Config(和其他值) - 我将值设置如下:
$memcache = new Memcache();
...
if (!$config = $memcache->get($memcache->unique_key.APPLICATION_DOMAIN."#config"))
{
...
$memcache->set($memcache->unique_key.APPLICATION_DOMAIN."#config", $config);
}
我删除的值如下:
$memcache->delete($key);
从 memcache 中删除值后,它会正确显示在与删除相同的连接中 - 调用 $memcache->get($key) 正确地给了我 NULL。但是,当我刷新脚本(并与 memcache 建立新连接)时,数据会重新弹出,就好像 memcache 状态没有更新一样。我尝试使用 replace 代替(具有一些特定值),效果相同 - 值不会更新。
调用$memcache->flush() 有效,并从内存缓存中删除所有内容,但我想删除特定键。
在手册页上有一条 5 年前关于 PECL 版本和 memcached 之间不兼容的神秘消息(但那是 5 年前的)。有人可以向我解释可能发生的事情吗?
我在 PHP 5.6 上使用 memcached 1.4.21 和 memcache (PECL) 3.0.8
【问题讨论】:
-
delete方法应该返回true或false而不是NULL- 你如何检查它返回的值? -
@skrilled - 我没有写到
delete方法返回NULL而是“正确调用$memcache->get($key)给我NULL”。delete实际上返回 true。 -
哦,好吧,很抱歉造成误会。
-
你“刷新你的脚本”意味着你让它再次运行?将变量写入内存缓存的脚本是否相同?
-
@LarsStegelitz - 我从内存缓存中的值开始。我正在运行一个从内存缓存中删除值的脚本。然后,在将任何内容放入内存缓存之前,我会使用
exit在内存缓存中显示值。