Redis клиент для PHP: Predis — установка, подключение, примеры

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Predis — гибкий Redis клиент для PHP

Redis — это высокопроизводительное хранилище данных типа «ключ-значение», которое часто используется для кеширования, сессий, очередей и real-time приложений. Для работы с Redis из PHP существует несколько библиотек, и одна из самых популярных — Predis. Это полностью PHP-реализация клиента, не требующая установки дополнительных расширений (в отличие от phpredis). Predis поддерживает все основные команды Redis, кластеризацию, репликацию, Pub/Sub и работу с транзакциями.

Установка Predis через Composer

Установка Predis осуществляется стандартным способом через Composer. Убедитесь, что Composer установлен в вашем проекте, и выполните команду:

composer require predis/predis

После установки в файле composer.json появится зависимость, а библиотека будет доступна в папке vendor.

Подключение к Redis серверу

Для начала работы создайте экземпляр клиента Predis. По умолчанию он подключается к 127.0.0.1:6379, но вы можете указать свои параметры.

<?php
require 'vendor/autoload.php';

use Predis\Client;

// Подключение с параметрами по умолчанию
$client = new Client();

// Или с явным указанием хоста и порта
$client = new Client([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);

// Если требуется пароль
$client = new Client([
    'host' => 'localhost',
    'port' => 6379,
    'password' => 'my_secret_password',
]);
?>

Если Redis запущен на удаленном сервере или использует UNIX-сокет, просто измените соответствующие параметры.

Основные операции с данными

Predis поддерживает все стандартные типы данных Redis: строки, хеши, списки, множества и отсортированные множества. Рассмотрим базовые примеры.

Работа со строками

<?php
// Установить значение
$client->set('user:100:name', 'Иван Петров');

// Получить значение
$name = $client->get('user:100:name');
echo $name; // Иван Петров

// Проверить существование ключа
if ($client->exists('user:100:name')) {
    echo 'Ключ существует';
}

// Удалить ключ
$client->del(['user:100:name']);
?>

Работа с хешами

Хеши удобны для хранения объектов — например, данных пользователя.

<?php
// Установить поля хеша
$client->hmset('user:100', [
    'name'  => 'Анна Смирнова',
    'email' => 'anna@example.com',
    'age'   => 28,
]);

// Получить одно поле
$email = $client->hget('user:100', 'email');

// Получить все поля
$userData = $client->hgetall('user:100');
print_r($userData);

// Увеличить числовое поле
$client->hincrby('user:100', 'age', 1);
?>

Работа со списками

Списки Redis идеально подходят для очередей и логов.

<?php
// Добавить элементы в начало списка (стек)
$client->lpush('tasks', 'task1', 'task2', 'task3');

// Добавить в конец списка (очередь)
$client->rpush('tasks', 'task4');

// Получить все элементы списка
$allTasks = $client->lrange('tasks', 0, -1);
print_r($allTasks);

// Извлечь первый элемент
$first = $client->lpop('tasks');
echo $first; // task3
?>

Установка времени жизни ключа (TTL)

Одна из мощных возможностей Redis — автоматическое удаление ключей через заданное время. Это часто используется для кеширования.

<?php
// Установить ключ с TTL 60 секунд
$client->setex('cache:page', 60, 'HTML-контент страницы');

// Или для уже существующего ключа
$client->expire('cache:page', 120);

// Проверить оставшееся время жизни
$ttl = $client->ttl('cache:page');
echo "Осталось $ttl секунд";
?>

Работа с транзакциями

Predis поддерживает мульти-команды (транзакции) через MULTI и EXEC. Это гарантирует атомарное выполнение группы команд.

Рекомендаций