首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memcache -从memcache重新出现中删除的值

Memcache -从memcache重新出现中删除的值
EN

Stack Overflow用户
提问于 2016-07-08 16:57:34
回答 2查看 1.2K关注 0票数 5

我使用memcache存储Zend_Config (和其他值)--我将这些值设置为:

代码语言:javascript
复制
$memcache = new Memcache();
...

if (!$config = $memcache->get($memcache->unique_key.APPLICATION_DOMAIN."#config"))
{
    ...
    $memcache->set($memcache->unique_key.APPLICATION_DOMAIN."#config", $config);
}

我删除的值如下:

代码语言:javascript
复制
$memcache->delete($key);

在我从memcache中删除这些值之后,它正确地显示在与已删除的相同的连接中--调用$memcache->get($key)正确地给了我NULL。但是,当我刷新脚本(并与memcache建立新的连接)时,数据会弹出,就好像memcache状态没有更新一样。我尝试过使用replace (有一些特定的值),结果是相同的--这个值不会更新。

调用$memcache->flush()可以工作,并从memcache中删除所有内容,但是我想要删除特定的键。

在手册页面上,有一条5年前关于PECL版本与memcached之间不兼容的神秘信息(但那是5年前的)。谁能给我解释一下可能发生的事吗?

我在PHP5.6上使用memcached 1.4.21和memcache (PECL) 3.0.8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-28 15:25:26

这一问题源于以下内容的使用:

代码语言:javascript
复制
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');

foreach ($allSlabs as $server => $slabs)
    foreach ($slabs as $slabId => $slabMeta)
        foreach ($memcache->getExtendedStats('cachedump', (int) $slabId) as $entries)
            if (!empty($entries))
                foreach ($entries as $key => $entry)
                    if (strpos($key, $memcache->unique_key) === 0)
                    {
                        $value = $memcache->get($key);
                        $list[$key] = is_string($value) && unserialize($value) ? unserialize($value) : $value;
                    }

(您会注意到,它没有包含在我的原始查询中,因为它没有做任何事情,但是列出了存储在memcached中的键/值)

这个功能的问题在于,它显然会导致memcached变成只读的。虽然对函数的后续调用提供的值被更新(我认为它们是从本地内存中检索的),但memcached服务中的值不是。

这种行为影响到memcached的最新版本--这种破坏行为是在memcache (2.2.x)中引入的。

如果有人想调查这种行为,我会保持赏金公开

票数 7
EN

Stack Overflow用户

发布于 2016-07-21 13:12:16

一种非常适合我的方法是,使用相同的密钥再次设置缓存,但将过期时间放在几秒钟之前。这使得该密钥在您的缓存中过期。c#代码如下所示:

代码语言:javascript
复制
memcachedCache.Set(objectName, yourvalue, DateTime.Now.AddSeconds(-10)); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38271978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档