Memcached中的延迟过期

时间:2011-10-03 00:56:11

标签: memcached

我读了这篇文章 - How does the lazy expiration mechanism in memcached operate?

所以我有一个问题。 是否可以/建议自己制作一个程序,定期检查memcached中的所有项目,为每个项目发送GET请求,以便删除过期的项目?

我想要这个的原因是因为我希望对Memcached中使用的百分比进行适当的控制。如果这个百分比接近100%,我将永远不确定是否应该添加更多内存,或者我不应该担心,因为有很多过期的项目。

我使用PHP,遗憾的是这并没有返回memcached中的所有项目(不知道为什么):

    $allSlabs = $memcache->getExtendedStats('slabs');
    foreach ($allSlabs as $server => $slabs) {
        foreach ($slabs as $slabId => $slabMeta) {
            $cdump = $memcache->getExtendedStats('cachedump', (int)$slabId);
            foreach ($cdump as $keys => $arrVal) {
                foreach ($arrVal as $key => $v) {
                    echo $key, "\n";
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

您应该使用逐出率来查看是否需要添加更多内存。如果memcached必须抛出一个对象以便为存储下一个对象腾出空间,那么驱逐统计数据将会增加。 (并且您可以查看“回收”统计数据,以查看我们可以回收物品存储新物品的内存的次数。

您建议的代码会不时地转储其内容,从而阻塞服务器。

相关问题