Компонент Cache¶
Установка¶
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, вам понадобится выучить ключевые концепты:
- Объект
- Одна единица информации, хранящаяся в виде пары ключ-значение, где ключ - уникальный идентификатор информации, а значение - его содержимое;
- Пул
- Логическое хранилище объектов кеша.Все операции кеша (сохранение объектов, поиск объектов и др.) выполняются через пул. Приложения могут определять столько пулов, сколько необходимо.
- Адаптер
- Реализует сам механизм кеширования, чтобы хранить информацию в файловой системе, DB и др. Компонент предоставляет несколько готовых к использованию адаптеров для распространённых бэк-эндов кеширования (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.
Продвинутое использование (PSR-6)¶
- Cache Invalidation
- Инвалидация кеша
- Cache Items
- Объекты кеша
- Cache Pools and Supported Adapters
- Пулы кешей и поддерживаемые адаптеры
- Адаптер кеша PDO & Doctrine DBAL
- Адаптер кеша Php массива
- Адаптер кеша прокси
- Adapters For Interoperability between PSR-6 and PSR-16 Cache
- Адаптеры для взаимодействия между кешами PSR-6 и PSR-16
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.