Skip to content
Anton edited this page Dec 15, 2016 · 35 revisions

Описание

Данный класс лишь враппер для ленивой инициализации адаптеров кеширования, ну и чтобы ничего не ломалось, даже если кеш пытаемся использовать без подключенного кеширования. Так же есть возможность вешать метки на определенные ключи (тегировать)

Настройка

с версии 7.1.0 изменилась структура конфигурации пакета, фреймворк переехал на использование пакета cache/cache

Пример настройки для работы с файлами:

// config file cache.php
return array(
    "enabled" => true,
    "adapter" => "filesystem",
    "pools" => array(
        /**
         * @link https://github.com/php-cache/filesystem-adapter
         */
        "filesystem" => function() {
            $filesystemAdapter = new \League\Flysystem\Adapter\Local(PATH_DATA . '/cache');
            $filesystem        = new \League\Flysystem\Filesystem($filesystemAdapter);

            return new \Cache\Adapter\Filesystem\FilesystemCachePool($filesystem);
        }
    )
);

Пример настройки для работы с Predis:

// config file cache.php
return array(
    "enabled" => true,
    "adapter" => "predis",
    "pools" => array(
        /**
         * @link https://github.com/php-cache/predis-adapter
         * @link https://github.com/nrk/predis/wiki/Connection-Parameters
         * @link https://github.com/nrk/predis/wiki/Client-Options
         */
        "predis" => function() {
            $client = new \Predis\Client('tcp:/127.0.0.1:6379');
            return new \Cache\Adapter\Predis\PredisCachePool($client);
        }
    )
);

Примеры конфигурации других адаптеров вы сможете найти на странице http://www.php-cache.com/en/latest/#cache-pool-implementations

Использование

Код контроллера:

use Bluz\Proxy\Cache;

if (!$data = Cache::get('key')) {
    $data = 1*2*3*4*5; // any calculation
    Cache::set('key', $data, /*TTL in seconds*/ 60)
}

Работа с тегами (работает не со всеми адаптерами http://www.php-cache.com/en/latest/#cache-pool-implementations):

use Bluz\Proxy\Cache;

Cache::set('user.profile.42', $data, 3600, ['user', 'profile']);
Cache::clearTags(['user']);

с версии 7.1.0 появилась поддержка PSR-6

Работа с адаптером согласно PSR-6:

use Bluz\Proxy\Cache;

if ($cachePool = Cache::getInstance()) {
    $item = $cachePool->getItem('key');
    $item->get();
    $item->set('value');
    $cachePool->save($item);
}

необходимо помнить, что если кеширование будет отключено, то Cache::getInstance() === false

Использования произвольного адаптера

с версии 0.9.1

В некоторых случаях требуется механизм кеширования отличный от использованного по умолчанию, тогда следует использовать следующий подход (адаптер redis сконфигурирован, но не задан как дефолтный):

use Bluz\Proxy\Cache;

$adapter = Cache::getInstance()->getAdapter('redis');

// follow PSR-6
$item = $adapter->getItem('user.profile.42');
echo $item->get();

Статистика

Для отображения статистики APC достаточно найти файл apc.php:

find / -name apc.php* 2>/dev/null

И затем уже его вызвать (настройки доступа описаны внутри скрипта).

Аналогичный скрипт написан и для memcache:

Для работы с Redis рекомендую утилиту Redis Desktop Manager

Clone this wiki locally