Кэш

October CMS Documentation Docs

Кэш

# Настройка

Октябрь предоставляет унифицированное API для различных систем кэширования. Настройки кэша содержатся в файле config/cache.php. Там же Вы можете указать драйвер, который будет использоваться для кэширования. Многие популярные системы, такие как Memcached (opens new window) и Redis (opens new window) поддерживатся "из коробки".

Файл с настройками также содержит множество других параметров, которые в нём же документированы, поэтому обязательно ознакомьтесь с ними. По умолчанию OctoberCMS настроен для использования драйвера file, который хранит упакованные объекты кэша в файловой системе. Для больших приложений рекомендуется использование систем кэширования в памяти - таких как Memcached или APC.

# Требования

# База данных

Драйвер кэша database использует базу данных вместо файловой системы. Структура базы данных уже создана, поэтому для его использования Вам больше не нужно ничего настраивать.

# Memcached

Вам нужно установить и настроить Memcached PECL package (opens new window) для того, чтобы испльзовать Memcached.

Конфигурация по умолчанию использует TCP/IP на основе Memcached::addServer (opens new window):

'memcached' => [
    [
        'host' => '127.0.0.1',
        'port' => 11211,
        'weight' => 100
    ],
],

Вы также можете указать параметр host. Тогда параметр port должен быть равен 0:

'memcached' => [
    [
        'host' => '/var/run/memcached/memcached.sock',
        'port' => 0,
        'weight' => 100
    ],
],

# Redis

Вы должны установить Drivers plugin (opens new window) перед тем, как использовать драйвер Redis.

Файл с настройками находится в config/database.php. Внутри этого файла вы увидите массив redis, содержащий серверы Redis, используемые вашим приложением:

'redis' => [

    'cluster' => false,

    'default' => [
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
    ],

],

Вы можете определить массив options, чтобы указать набор Predis client options (opens new window).

Если Ваш сервер Redis требует аутентификацию, то Вы можете добавить параметр password в файл с настройками.

# Использование кэша

В то время как бОльшая часть логики кэширования скрыта внутри Октября, фасад Cache предоставляет некоторые простые методы для кэширования ваших собственных данных.

# Получение элементов из кэша

Метод get фасада Cache используется для получения элементов из кэша. Если элемент не существует, то метод вернет null. Второй аргумент указывает значение по умолчанию:

$value = Cache::get('key');

$value = Cache::get('key', 'default');

Вы даже можете передать значение Closure в качестве значения по умолчанию. Результат Closure будет возвращен, если в кеше указанный элемент не существует:

$value = Cache::get('key', function() {
    return Db::table(...)->get();
});

# Проверка существования элемента в кэше

if (Cache::has('key')) {
    //
}

# Увеличение / Уменьшение значений

Увеличение числового значения:

Cache::increment('key');

Cache::increment('key', $amount);

Уменьшение числового значения:

Cache::decrement('key');

Cache::decrement('key', $amount);

# Retrieve or update

Иногда Вам может быть нужно получить элемент из кэша или сохранить его там, если он не существует. Вы можете сделать это методом Cache::remember:

$value = Cache::remember('users', $minutes, function() {
    return Db::table('users')->get();
});

Вы также можете совместить методы remember и forever:

$value = Cache::rememberForever('users', function() {
    return Db::table('users')->get();
});

# Retrieve and delete

Если Вы хотите получить элемент из кэша и затем удалить его, вы можете воспользоваться методом pull:

$value = Cache::pull('key');

# Запись элементов в кэш

Запись нового элемента в кэш

Cache::put('key', 'value', $minutes);

Использование объекта Carbon для установки времени жизни кэша

$expiresAt = Carbon::now()->addMinutes(10);

Cache::put('key', 'value', $expiresAt);

Метод add возвращает true, если производится запись элемента в кэш. Иначе, если элемент уже есть в кэше, возвращается false:

Cache::add('key', 'value', $minutes);

Запись элемента на постоянное хранение

Cache::forever('key', 'value');

# Удаление элементов из кэша

Удаление элемента из кэша

Cache::forget('key');

Используйте метод flush, чтобы удалить все элеменеты из кэша:

Cache::flush();