Компонент Cache

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

Установка

1
$ composer require symfony/cache

Также вы можете клонировать репозиторий https://github.com/symfony/cache.

Note

If you install this component outside of a Symfony application, you must require the vendor/autoload.php file in your code to enable the class autoloading mechanism provided by Composer. Read this article for more details.

Кеш (PSR-6) протв простого кеша (PSR-16)

Этот компонент включает в себя два разных подхода к кешированию:

:ref:` Кеширование PSR-6<cache-component-psr6-caching>`:
Полноценная система кода, которая включает в себя "пулы" кеша, более продвинутые "объекты" кеша и тегирование кеша для инвалидации.
Простое кеширование PSR-16:
Простой способ хранить, извлекать и удалять объекты из кеша.

Оба метода поддерживают одни и те же адаптеры кеша и дадут вам очень схожую производительность.

Tip

Компонент также содержит адаптеры для преобразования между кешами PSR-6 и PSR-16. См. Adapters For Interoperability between PSR-6 and PSR-16 Cache.

Простое кеширование (PSR-16)

Эта часть компонента является реализацией PSR-16, что означает, что его базовый API совпадает с определённым в стандарте. Для начала, создайте объект кеша из одного из встроенных классов кеша. Например, чтобысоздать кеш, основанный на файловой системе, инстанциируйте FilesystemCache:

1
2
3
use Symfony\Component\Cache\Simple\FilesystemCache;

$cache = new FilesystemCache();

Теперь вы можете создавать, извлекать, обновлять и удалять объекты, используя это:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// сохранить новый объект в кеш
$cache->set('stats.products_count', 4711);

// или установить его с пользовательским ttl
// $cache->set('stats.products_count', 4711, 3600);

// извлечь объект кеша
if (!$cache->has('stats.products_count')) {
    // ... объект не существует в кеше
}

// извлечь значение, хранимое объектом
$numProducts = $cache->get('stats.products_count');

// или указать значение по умолчанию, если ключ не существует
// $numProducts = $cache->get('stats.products_count', 100);

// удалить ключ кеша
$cache->delete('stats.products_count');

// очистить *все* ключи кеша
$cache->clear();

Вы также можете работать с несколькими объектами одновременно:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$cache->setMultiple(array(
    'stats.products_count' => 4711,
    'stats.users_count' => 1356,
));

$stats = $cache->getMultiple(array(
    'stats.products_count',
    'stats.users_count',
));

$cache->deleteMultiple(array(
    'stats.products_count',
    'stats.users_count',
));

Добступные классы простого кеша (PSR-16)

Доступны следующие адаптеры кеша:

Tip

Чтобы узнать больше о каждом из этих классов, вы можете прочесть страницу PSR-6 Cache Pool. Эти "простые" классы кеша (PSR-16) не идентичны адаптерам PSR-6 на этой странице, но каждый имеет общие аргументы конструктора и случаи использования.

Более продвинутое кеширование (PSR-6)

Чтобы использовать более продвинутые возможности кеширования PSR-6, вам понадобится выучить ключевые концепты:

Объект
Одна единица информации, хранящаяся в виде пары ключ-значение, где ключ - уникальный идентификатор информации, а значение - его содержимое;
Пул
Логическое хранилище объектов кеша.Все операции кеша (сохранение объектов, поиск объектов и др.) выполняются через пул. Приложения могут определять столько пулов, сколько необходимо.
Адаптер
Реализует сам механизм кеширования, чтобы хранить информацию в файловой системе, БД и др. Компонент предоставляет несколько готовых к использованию адаптеров для распространённых бэк-эндов кеширования (Redis, APCu, Doctrine, PDO, и т.д.)

Базовое применение (PSR-6)

Эта часть компонента является реализацией PSR-6, что означает, что его базовый API совпадает с определённым в стандарте. До того, как кешировать информацию, создайте пул кеша, используя любые встроенные адаптеры. Например, чтобы создать кеш, основанный на файловой системе, инстанциируйте FilesystemAdapter:

1
2
3
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$cache = new FilesystemAdapter();

Теперь вы можете создавать, извлекать, обновлять и удалять объекты, используя этот пул кеша:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// создайте новый объект, пытаясь получить его из кеша
$productsCount = $cache->getItem('stats.products_count');

// назначьте значение объекту и сохраните его
$numProducts->set(4711);
$cache->save($numProducts);

// извлеките объект кеша
$productsCount = $cache->getItem('stats.products_count');
if (!$productsCount->isHit()) {
    // ... объект не существует в кеше
}
// извлеките значение, хранимое объектом
$total = $productsCount->get();

// удалите объект кеша
$cache->deleteItem('stats.products_count');

Чтобы увидеть список всех поддерживаемых адаптеров, см. Cache Pools and Supported Adapters.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.