# 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`**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.morozovpimnev.ru/poleznosti/memcache-d.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
