Redis
11.x
.
Почему это важно?
Введение
Redis – продвинутое хранилище пар ключ/значение. Его часто называют сервисом структур данных, так как ключи могут содержать строки, хэши, списки, наборы, and сортированные наборы.
Внимание: Если у вас установлено расширение Redis через PECL, вам нужно переименовать псевдоним в файле
app/config/app.php
.
Настройка
Настройки вашего подключения к Redis хранятся в файле app/config/database.php
. В нём вы найдёте массив redis
, содержащий список серверов, используемых приложением:
'redis' => array(
'cluster' => true,
'default' => array('host' => '127.0.0.1', 'port' => 6379),
),
Если у вас Redis установлен на других портах, или есть несколько redis-серверов, дайте имя каждому подключению к Redis и укажите серверные хост и порт.
Параметр cluster
ообщает клиенту Redis Laravel, что нужно выполнить фрагментацию узлов Redis (client-side sharding), что позволит вам обращаться к ним и увеличить доступную RAM. Однако заметьте, что фрагментация не справляется с падениями, поэтому она в основном используется для кэшировании данных, которые доступны из основного источника.
Если ваш сервер Redis требует авторизацию, вы можете указать пароль, добавив к параметрам подключения пару ключ/значение password
.
Использование
Вы можете получить экземпляр Redis методом Redis::connection
:
$redis = Redis::connection();
Так вы получите экземпляр подключения по умолчанию. Если вы не используете фрагментацию, то можно передать этому методу имя сервера для получения конкретного подключения, как оно определено в файле настроек.
$redis = Redis::connection('other');
Как только у вас есть экземпляр клиента Redis вы можете выполнить любую команду Redis.Laravel использует магические методы PHP для передачи команд на сервер:
$redis->set('name', 'Тейлор');
$name = $redis->get('name');
$values = $redis->lrange('names', 5, 10);
Как вы видите, параметры команд просто передаются магическому методу. Конечно, вам не обязательно использовать эти методы – вы можете передавать команды на сервер методом command
:
$values = $redis->command('lrange', array(5, 10));
Если у вас в конфиге определено одно дефолтное подключение, то вы можете использовать статические методы:
Redis::set('name', 'Тейлор');
$name = Redis::get('name');
$values = Redis::lrange('names', 5, 10);
Примечание: Laravel поставляется с драйверами Redis для кэширования и сессий.
Конвейер
Конвейер (pipelining) должен использоваться, когда вы отправляете много команд на сервер за одну операцию. Для начала выполните команду pipeline
:
Отправка конвейером набора команд на сервер
Redis::pipeline(function($pipe)
{
for ($i = 0; $i < 1000; $i++)
{
$pipe->set("key:$i", $i);
}
});