Перейти к содержанию

CacheService

Описание: Сервис для работы с кэшем Реализация интерфейса кэширования с использованием PSR-6 Cache. Обеспечивает типобезопасную работу с различными драйверами кэша. Поддерживает все основные операции кэширования: получение, сохранение, удаление, проверка существования и массовые операции.

С версии: 1.0.0

Версия: 1.0.0

Пример:

PHP
// Создание с файловым кэшем
$cache = new CacheService(new FilesystemAdapter());
// Сохранение данных
$cache->set('movie_123', $movieData, 3600);
// Получение данных
$data = $cache->get('movie_123');
// Проверка существования
if ($cache->has('movie_123')) {
// Данные есть в кэше
}

См. также:

  • \KinopoiskDev\Contracts\CacheInterface: Интерфейс кэширования
  • \Psr\Cache\CacheItemPoolInterface: PSR-6 интерфейс кэша

__construct()

Описание: Конструктор сервиса кэширования Создает новый экземпляр сервиса кэширования с указанным PSR-6 адаптером кэша.

Параметры:

  • $cache (CacheItemPoolInterface): PSR-6 кэш адаптер (FilesystemAdapter, RedisAdapter и т.д.)

Пример:

PHP
1
2
3
4
5
6
7
8
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Adapter\RedisAdapter;
// Файловый кэш
$cache = new CacheService(new FilesystemAdapter());
// Redis кэш
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$cache = new CacheService(new RedisAdapter($redis));

get()

Описание: Получает значение из кэша по ключу

Получает значение из кэша по ключу. Возвращает null, если ключ не найден или произошла ошибка при обращении к кэшу. Автоматически нормализует ключ для соответствия PSR-6.

Параметры:

  • $key (string): Ключ кэша для получения значения

Возвращает: mixed|null Значение из кэша или null если не найдено

Пример:

PHP
1
2
3
4
$movie = $cache->get('movie_123');
if ($movie !== null) {
// Используем данные из кэша
}

set()

Описание: Сохраняет значение в кэш

Сохраняет значение в кэш с указанным временем жизни. Автоматически нормализует ключ и обрабатывает ошибки. Возвращает true при успешном сохранении, false при ошибке.

Параметры:

  • $key (string): Ключ кэша для сохранения
  • $value (mixed): Значение для сохранения в кэше
  • $ttl (int): Время жизни в секундах (по умолчанию 1 час)

Возвращает: bool True при успешном сохранении, false при ошибке

Пример:

PHP
1
2
3
4
// Сохранение на 1 час
$success = $cache->set('movie_123', $movieData);
// Сохранение на 30 минут
$success = $cache->set('movie_123', $movieData, 1800);

delete()

Описание: Удаляет значение из кэша

Удаляет значение из кэша по ключу. Возвращает true при успешном удалении или если ключ не существовал, false при ошибке.

Параметры:

  • $key (string): Ключ кэша для удаления

Возвращает: bool True при успешном удалении, false при ошибке

Пример:

PHP
1
2
3
4
$deleted = $cache->delete('movie_123');
if ($deleted) {
echo "Ключ удален из кэша";
}

has()

Описание: Проверяет наличие ключа в кэше

Проверяет наличие ключа в кэше. Возвращает true, если ключ существует и не истек, false в противном случае.

Параметры:

  • $key (string): Ключ кэша для проверки

Возвращает: bool True если ключ существует, false если нет или произошла ошибка

Пример:

PHP
1
2
3
4
5
6
7
8
if ($cache->has('movie_123')) {
// Ключ существует в кэше
$data = $cache->get('movie_123');
} else {
// Ключа нет, загружаем данные
$data = loadMovieFromDatabase(123);
$cache->set('movie_123', $data);
}

clear()

Описание: Очищает весь кэш

Очищает весь кэш. Удаляет все сохраненные ключи и значения. Возвращает true при успешной очистке, false при ошибке.

Возвращает: bool True при успешной очистке, false при ошибке

Пример:

PHP
1
2
3
4
$cleared = $cache->clear();
if ($cleared) {
echo "Весь кэш очищен";
}

getMultiple()

Описание: Получает множественные значения по ключам

Получает множественные значения по ключам. Возвращает ассоциативный массив найденных ключей и их значений. Ключи, которые не найдены, не включаются в результат.

Параметры:

  • $keys (array): Массив ключей для получения

Возвращает: array<string, mixed> Ассоциативный массив ключ => значение

Пример:

PHP
1
2
3
$keys = ['movie_123', 'movie_456', 'movie_789'];
$movies = $cache->getMultiple($keys);
// Результат: ['movie_123' => $data1, 'movie_456' => $data2]

setMultiple()

Описание: Сохраняет множественные значения

Сохраняет множественные значения в кэш. Использует отложенное сохранение для оптимизации производительности. Возвращает true при успешном сохранении всех значений.

Параметры:

  • $ttl (int): Время жизни в секундах (по умолчанию 1 час)

Возвращает: bool True при успешном сохранении, false при ошибке

Пример:

PHP
1
2
3
4
5
6
$movies = [
'movie_123' => $movieData1,
'movie_456' => $movieData2,
'movie_789' => $movieData3
];
$success = $cache->setMultiple($movies, 1800); // 30 минут

deleteMultiple()

Описание: Удаляет несколько ключей из кэша

Параметры:

  • $keys (array): Массив ключей для удаления

Возвращает: bool True, если все ключи успешно удалены, False при ошибке

normalizeKey()

Описание: Нормализует ключ кэша для соответствия PSR-6 Преобразует ключ кэша в формат, совместимый с PSR-6. Заменяет недопустимые символы на подчеркивания.

Параметры:

  • $key (string): Исходный ключ кэша

Возвращает: string Нормализованный ключ, совместимый с PSR-6

Пример:

PHP
1
2
3
// Внутреннее использование
$normalized = $this->normalizeKey('movie:123:data');
// Результат: 'movie_123_data'