我看过这个 - How does the lazy expiration mechanism in memcached operate?Memcached中的延迟过期
所以我有一个问题。 是否有可能/建议自己制作一个程序,定期检查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";
}
}
}
}
我不确定,但我认为“已使用百分比”仅检查未过期的项目,我很确定我的缓存从未接近100%,但如果过期的项目将计入使用-stats,它应该只会变大,而不会,百分比波动(增加_和减少)。我认为主动清除根本不是必需的吗?LRU只会使用_after_替换过期的项目有意义 – Nanne
会很好!我会测试自己,为某些MB添加一些垃圾,并且看看截止日期之后%是否仍然很高,谢谢。 – Nuno
到目前为止它还没有减少。它应该在10分钟后减少。但我知道你在说什么,因为我看到它也在波动,但可能需要一段时间。 – Nuno