Адаптер кеша Redis

Этот адаптер сохраняет значения в оперативной памяти, используя один (или больше) экземпляров `сервера Redis`_. В отличие от адаптера APCu, и схоже с адаптером Memcached, он не ограничен общей памятью текущего сервера; вы можете хранить содержание независимо от вашего PHP окружения. Возможность использовать кластер серверов для предоставления избыточности или восстановления после отказа также доступна.

Caution

Требования: Для использования этого адаптера должен быть установлен и запущен как минимум один сервер Redis. Кроме того, этот адаптер требует совместимого расширения или библиотеки, реализующей \Redis, \RedisArray, RedisCluster, или \Predis.

Этот адаптер ожидает, что экземпляр Redis, RedisArray, RedisCluster, или Predis будет передан в качестве первого параметра. Пространство имён и время жизни кеша по умолчанию могут быть опционально переданы в качестве второго и третьего параметров:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use Symfony\Component\Cache\Adapter\RedisAdapter;

$cache = new RedisAdapter(

    // объект, который хранит валидное соединение с вашей системой Redis
    \Redis $redisConnection,

    // строка-префикс кключам объектов, хранящихся в этом кеше
    $namespace = '',

    // время жизни по умолчанию (в секундах) для обїектов кеша, которіе не определяют
    // собственное время жизни, со значением 0, что приводит к бесконечному хранению обїектов
    // (т.е. пока не будет вызван until RedisAdapter::clear() или не будет очищен сервер(ы))
    $defaultLifetime = 0
);

Сконфигурируйте соединение

Метод хелпера createConnection() позволяе создание и конфигурацию экземпляра класса клиента Redis используя Имя источника данных (DSN):

1
2
3
4
5
6
use Symfony\Component\Cache\Adapter\RedisAdapter;

// передайте одну строку DSN, чтобы зарегистрировать в клиенте один сервер
$client = RedisAdapter::createConnection(
    'redis://localhost'
);

DSN может указываь либо IP/хост (и необязательный порт), либо путь сокета, а также пользователя и пароль и оглавление БД.

Note

Имя источника данных (DSN) для этого адаптера должно использовать следующий формат.

1
redis://[user:[email protected]][ip|host|socket[:port]][/db-index]

Ниже представлены общие примеры валидных DSN, демонстрирующие комбинацию доступных значений:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use Symfony\Component\Cache\Adapter\RedisAdapter;

// хост "my.server.com" и порт "6379"
RedisAdapter::createConnection('redis://my.server.com:6379');

// хост "my.server.com" и порт "6379" and database index "20"
RedisAdapter::createConnection('redis://my.server.com:6379/20');

// хост "localhost" и SASL пользователь "rmf" и передать "abcdef"
RedisAdapter::createConnection('redis://rmf:[email protected]');

// сокет "/var/run/redis.sock" и SASL пользователь "user1" и передать "bad-pass"
RedisAdapter::createConnection('redis://user1:[email protected]/var/run/redis.sock');

Сконфигурируйте опции

Метод хелпера createConnection() также принимает массив опций в качестве второго аргумента. Ожидаемый формат - ассоциативный массив пар key => value, представляющих названия опций и их соответственные значения:

use SymfonyComponentCacheAdapterRedisAdapter;

$client = RedisAdapter::createConnection(

// предоставьте dsn-строку 'redis://localhost:6739',

// ассоциативный массив опций конфигурации array(

'persistent' => 0, 'persistent_id' => null, 'timeout' => 30, 'read_timeout' => 0, 'retry_interval' => 0,

)

);

Доступные опции

class (тип: string)
Указывает возвращаемую библиотеку соединения, либо \Redis, либо \Predis\Client. Если не указана, то будет возвращена \Redis, если доступно расширение redis, и \Predis\Client в других случаях.
persistent (тип: int, по умолчанию: 0)
Включает или отключает использование персистентных соединений. Значение 0 отключает персистентные соединения, а значение 1 - включает.
persistent_id (тип: string|null, по умолчанию: null)
Указывает персистентный id строки, используемой для персистентного соединения.
read_timeout (тип: int, по умолчанию: 0)
Указывает время (в секундах), используемое при выполнение операций чтения в основном источнике сети до тайм-аута операции.
retry_interval (тип: int, по умолчанию: 0)
Указывает промежуток (в милисекундах) между попытками повторного соединения в случае, если клиент потеряет соединение с сервером.
timeout (тип: int, по умолчанию: 30)
Указывает время (в секундах), используемое для подключения в серверу Redis до тайм-аута попытки соединения.

Note

При использовании библиотеки Predis доступные некоторые дополнительные опции, применимые к Predis. Прочтите документацию `Парметры соединения Predis`_, чтобы узнать больше.

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