Класс Cache
Класс Cache является фасадом для работы с системой кэширования
Laravel. Он предоставляет удобный интерфейс для хранения, получения
и управления кэшированными данными. Класс поддерживает различные
драйверы: файловый, база данных, Redis, Memcached и другие.
Основные методы класса позволяют сохранять данные с указанием
времени жизни, получать данные по ключу, проверять их наличие,
удалять и выполнять атомарные операции.
Получение данных из кэша
Метод get используется для извлечения значения по ключу.
Первым параметром передаётся ключ, вторым - значение по умолчанию,
которое будет возвращено, если ключ отсутствует в кэше.
<?php
use Illuminate\Support\Facades\Cache;
$value = Cache::get('user_data', 'default_value');
echo $value;
?>
Результат выполнения кода:
"default_value"
Сохранение данных в кэш
Метод put сохраняет значение в кэш с указанием времени
жизни в секундах. Первым параметром передаётся ключ,
вторым - значение, третьим - количество секунд, в течение которых
данные будут считаться актуальными.
<?php
use Illuminate\Support\Facades\Cache;
Cache::put('user_data', ['name' => 'John', 'age' => 30], 3600);
$user = Cache::get('user_data');
print_r($user);
?>
Результат выполнения кода:
["name" => "John", "age" => 30]
Добавление данных с проверкой существования
Метод add добавляет значение в кэш только в том случае,
если ключ ещё не существует. Возвращает true при успешном
добавлении и false, если ключ уже присутствует в кэше.
<?php
use Illuminate\Support\Facades\Cache;
$result = Cache::add('counter', 1, 60);
echo $result ? 'Added' : 'Not added';
$result2 = Cache::add('counter', 2, 60);
echo $result2 ? 'Added' : 'Not added';
?>
Результат выполнения кода:
"AddedNot added"
Сохранение данных на неограниченный срок
Метод forever сохраняет данные в кэш без ограничения
по времени. Такие данные будут храниться до тех пор, пока
их явно не удалить с помощью метода forget.
<?php
use Illuminate\Support\Facades\Cache;
Cache::forever('settings', ['theme' => 'dark', 'language' => 'ru']);
$settings = Cache::get('settings');
print_r($settings);
?>
Результат выполнения кода:
["theme" => "dark", "language" => "ru"]
Получение данных с автоматическим кэшированием
Метод remember извлекает данные из кэша, а если они
отсутствуют, выполняет переданное замыкание для их получения
и автоматически сохраняет результат в кэш с указанным временем
жизни. Это удобно для кэширования результатов тяжёлых операций.
<?php
use Illuminate\Support\Facades\Cache;
$users = Cache::remember('users_list', 600, function () {
return User::where('active', true)->get();
});
foreach ($users as $user) {
echo $user->name . ' ';
}
?>
Результат выполнения кода:
"John Jane Bob Alice"
Проверка наличия ключа в кэше
Метод has проверяет существование ключа в кэше.
Возвращает true, если ключ существует, и false в противном случае.
<?php
use Illuminate\Support\Facades\Cache;
Cache::put('test_key', 'test_value', 60);
$hasKey = Cache::has('test_key');
echo $hasKey ? 'Key exists' : 'Key not found';
$hasMissing = Cache::has('missing_key');
echo $hasMissing ? 'Key exists' : 'Key not found';
?>
Результат выполнения кода:
"Key existsKey not found"
Удаление данных из кэша
Метод forget удаляет указанный ключ из кэша.
Если ключ не существует, метод ничего не делает.
<?php
use Illuminate\Support\Facades\Cache;
Cache::put('temp_data', 'some value', 60);
Cache::forget('temp_data');
$value = Cache::get('temp_data', 'not found');
echo $value;
?>
Результат выполнения кода:
"not found"
Очистка всего кэша
Метод flush удаляет все данные из кэша.
Будьте осторожны с этим методом, так как он очищает всё
кэшированное содержимое для текущего драйвера.
<?php
use Illuminate\Support\Facades\Cache;
Cache::put('key1', 'value1', 60);
Cache::put('key2', 'value2', 60);
Cache::flush();
$hasKey1 = Cache::has('key1');
$hasKey2 = Cache::has('key2');
echo $hasKey1 ? 'has' : 'empty';
echo $hasKey2 ? 'has' : 'empty';
?>
Результат выполнения кода:
"emptyempty"
Использование метода pull
Метод pull извлекает значение из кэша и одновременно
удаляет его. Это полезно для получения и удаления данных за одну
операцию.
<?php
use Illuminate\Support\Facades\Cache;
Cache::put('temp_token', 'abc123', 60);
$token = Cache::pull('temp_token');
echo $token;
$tokenAgain = Cache::get('temp_token', 'not found');
echo $tokenAgain;
?>
Результат выполнения кода:
"abc123not found"