Ленивый срок действия в Memcached - PullRequest
2 голосов
/ 03 октября 2011

Я прочитал это - Как работает механизм отложенного истечения в 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";
                }
            }
        }
    }

1 Ответ

2 голосов
/ 03 октября 2011

Вы должны просто использовать коэффициент выселения, чтобы узнать, нужно ли вам добавить больше памяти.Статистика выселения будет увеличиваться, если memcached пришлось выбросить объект, чтобы освободить место для хранения следующего.(и вы можете посмотреть на «исправленную» статистику, чтобы увидеть, сколько раз мы могли бы восстановить память для элемента для хранения нового элемента.

Код, который вы предлагаете, может привести к сбою сервера из-за сброса содержимоговремя от времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...