Кэширование

Кэширование — это процесс, который оптимизирует работу приложения и снижает нагрузку на сервер. Он достигается за счёт сохранения часто используемых данных в памяти, что позволяет быстро извлекать их при последующих запросах.

Imhotep предлагает разнообразные системы кэширования, что даёт вам возможность выбрать наиболее подходящую под ваши требования к приложению.

Конфигурирование

Файл config/cache.php содержит все необходимые настройки системы кэширования. Откройте файл и изучите содержимое.

Доступ к кэш-хранилищу

Для получения доступа к определенному кэш-хранилищу из списка, указанного в массиве stores конфигурационного файла config/cache.php, можно использовать один из следующих методов:

// Используя фасад Cache
Cache::store('array')->set('foo', 'bar');

// Используя вспомогательную функцию
cache('file')->set('foo', 'bar');
PHP

Проверка наличия данных

Чтобы узнать, присутствует ли ключ в кэше, используйте метод has. Если же вы хотите убедиться, что ключа нет в кэше, примените метод missing:

// Проверяем наличие ключа
if (Cache::has('key')) {
    // ...
}

// Проверка на отсутствие ключа
if (Cache::missing('key')) {
    // ...
}
PHP

Получение данных

Используйте метод get, чтобы получить значение по его ключу. Если ключ не найден, метод вернёт значение null. Вторым аргументом можно указать значение по умолчанию или передать замыкание, которое будет возвращать это значение в случае, если ключ не будет найден.

// Вернет значение ключа или null
$value = Cache::get('key');
$value = cache()->get('key');

// Если значения не существует, будет возвращено 'default'
$value = Cache::get('key', 'default');
$value = cache()->get('key', 'default');

// Вариант с замыканием
$value = Cache::get('key', function () {
    return 'default';
});
PHP

Метод many возвращает массив значений переданных ключей. Для отсутствующих значений ключей будет возвращено null.

$values = Cache::many('key1', 'key2', 'key3');
PHP

Сохранение данных

Для сохранения данных в кэше воспользуйтесь методом put. Третьим аргументом, который является необязательным, можно указать время жизни данных в кэше. По истечении этого времени данные будут удалены. Если этот аргумент опущен, то он имеет значение 0, что означает, что данные будут храниться в кэше вечно.

// Сохранить элемент на время указанное в конфигурации
Cache::put('key', 'value', 0);

// Сохранить элемент в кэше вечно
Cache::put('key', 'value', 0);

// Альтернативный вариант вечного хранения
Cache::forever('key', 'value');

// Сохранить элемент на 5 минут
Cache::put('key', 'value', ttl: 60 * 5);
PHP

Иногда возникает необходимость сохранить данные только в том случае, если они отсутствуют в кэше. Для этого можно воспользоваться методом add. Этот метод вернёт true, если данные были успешно сохранены, в противном случае false.

// Добавить если отсутствует и
// хранить в течение времени указанного в конфигурации
Cache::add('key', 'value');

// Добавить если отсутствует и хранить вечно
Cache::add('key', 'value');

// Добавить если отсутствует и хранить 5 минут
Cache::add('key', 'value', ttl: 300);
PHP

Сохранение массива элементов

Для сохранения массива элементов, используйте метод putMany:

// Хранить элементы на время указанное в конфигурации
Cache::putMany([
    ['key1' => 'value1'],
    ['key2' => 'value2'],
]);

// Хранить элементы в кэше вечно
Cache::putMany([
    ['key1' => 'value1'],
    ['key2' => 'value2'],
], 0);

// Сохранить элементы на 5 минут
Cache::putMany([
    ['key1' => 'value1'],
    ['key2' => 'value2'],
], ttl: 300);
PHP

Increment / Decrement

Для увеличения или уменьшения целых чисел в кэше можно воспользоваться методами increment и decrement. В качестве второго необязательного аргумента они принимают величину, на которую нужно увеличить или уменьшить значение.

Эти методы возвращают обновленное значение или false в случае возникновения ошибки при сохранении. Если в кэше нет соответствующего значения, он будет добавлен автоматически.

$value = Cache::increment('key'); // return 1
$value = Cache::increment('key', 10); // return 11
$value = Cache::decrement('key', 5); // return 6
PHP

Извлечь и сохранить

Иногда необходимо извлечь значение элемента из кэша и в случае его отсутствия сохранить значение по умолчанию. Для этого в вашем распоряжении методы remember и rememberForever:

// Данные хранятся в течение времени, указанного в конфигурации.
$value = Cache::remember('key', function () {
    return [...];
});

// Данные хранятся в течение 5 минут
$value = Cache::remember('key', function () {
    return [...];
}, ttl: 300);

// Данные хранятся вечно
$value = Cache::rememberForever('key', function () {
    return [...];
});
PHP

Удаление данных

Чтобы удалить элемент по ключу, воспользуйтесь методом delete. В случаях, когда требуется очистить весь кэш, примените метод flush.

// Удалить значение по ключу
Cache::delete('key');

// Очистить весь кэш
Cache::flush();
PHP