我看過這個 - 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