> For the complete documentation index, see [llms.txt](https://support.morozovpimnev.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.morozovpimnev.ru/poleznosti/memcache-d.md).

# Memcache\*d

## Возможно ваш кэш не работает

Если у вас есть модуль "Кэширование" и вы используете memcache или memcached, возможно он у вас не работает или работает не правильно, даже если модуль и включен.

Ниже приведен код для проверки правильной работы

<pre class="language-php" data-line-numbers data-full-width="true"><code class="lang-php">&#x3C;?php

$driver = Core::$mainConfig['defaultCache'];
$aConfig = Core::$config->get('core_cache', array());
$config = $aConfig[$driver];

if($driver == 'memcache')
{
    if(extension_loaded('memcache'))
    {
        $memcache = new Memcache();
<strong>        $memcache->connect($config['server'], $config['port']);
</strong><strong>        
</strong><strong>        $return = $memcache->set('TEST', 123, MEMCACHE_COMPRESSED, 120);
</strong>        $message = ($return ? 'SUCCESS' : 'ERROR');
        echo $message . "&#x3C;br />";
        
        print_r($memcache->getStats());
        echo "&#x3C;br />";
    }
    else
    {
        echo "Memcache not available!&#x3C;br />";
    }
}
elseif($driver == 'memcached')
{
    if(extension_loaded('memcached'))
    {
        $memcached = new Memcached();
        $memcached->addServer($config['server'], $config['port']);
        
        $memcached->set('TEST', 123, 120);
        $message = $memcached->getResultMessage();
        
        echo $message . "&#x3C;br />";
        
        print_r($memcached->getStats());
        echo "&#x3C;br />";
    }
    else
    {
        echo "Memcached not available!&#x3C;br />";
    }
}
</code></pre>

Если вы НЕ видите **`SUCCESS`** значит запись в кэш не работает, соответственно кэширование у вас на сайте не работает.

Если вы видите **`SUCCESS`** то в статистике стоит обратить на значения:

**limit\_maxbytes** - параметр показывает максимальный объем памяти, которую Memcache\*d может использовать для хранения значений (для магазинов рекомендуем минимум 128 Мб)

**evictions** — очень важный параметр, показывает количество объектов, которые пришлось удалить из хранилища для размещения там новых данных. Если он стал большим и все время растет, то имеет смысл оптимизировать использование памяти или добавить больше памяти для сервиса Memcache\*d.\
\
**get\_hits** - сколько раз мы взяли данные из кэша.\
\
**get\_misses** - сколько раз мы пытались взять данные из кэша, но его там не было или время жизни кэша истекло.\
\
Отношение **get\_misses**/**get\_hits** показывает эффективность использования кэша. Чем оно меньше, тем эффективней используется кэш. Если у вас get\_misses/get\_hits >= 1, то значит вы делаете что-то не так (скорее всего ставите слишком малое время жизни кэша).

Максимальный размер записи данных по умолчанию 1 Мб, так что следует отслеживать какие данные у вас не попали в кэш, например через хук **`Core_Cache.onAfterSet`**
