Как установить Redis на Ubuntu 24.04 и использовать его в Laravel
Redis — одна из самых популярных систем хранения данных в памяти. Благодаря высокой скорости работы Redis используется для кеширования, хранения сессий, организации очередей, ограничения количества запросов (Rate Limiting), публикации сообщений (Pub/Sub) и множества других задач.
Если вы разрабатываете приложения на Laravel, знание Redis практически обязательно. В этой статье мы рассмотрим, как установить Redis на Ubuntu 24.04, подключить его к Laravel и использовать для кеширования и очередей.
Что такое Redis
Redis (Remote Dictionary Server) — это высокопроизводительная NoSQL база данных типа «ключ — значение», которая хранит данные в оперативной памяти.
В отличие от MySQL или PostgreSQL, Redis оптимизирован для максимально быстрого чтения и записи данных.
Среднее время ответа Redis измеряется микросекундами.
Где используется Redis
Redis применяется практически во всех современных веб-приложениях:
кеширование данных;
хранение пользовательских сессий;
очереди задач;
Rate Limiting;
хранение OTP-кодов;
хранение JWT и токенов;
Pub/Sub;
WebSocket;
кэширование запросов к базе данных;
хранение временных данных.
Laravel имеет встроенную поддержку Redis.
Почему Redis настолько быстрый
Главная причина высокой производительности заключается в том, что Redis хранит данные в оперативной памяти (RAM), а не на жестком диске.
Это позволяет:
мгновенно получать данные;
уменьшить нагрузку на MySQL;
ускорить работу сайта;
обслуживать тысячи запросов в секунду.
Обновление системы
Перед установкой обновите пакеты:
sudo apt update
sudo apt upgrade -y
Установка Redis
Ubuntu 24.04 уже содержит Redis в официальных репозиториях.
Установите сервер:
sudo apt install redis-server -y
Проверка версии
redis-server --version
Например:
Redis server v=7.x.x
Проверка статуса службы
sudo systemctl status redis-server
Если Redis не запущен:
sudo systemctl start redis-server
Включить автозапуск:
sudo systemctl enable redis-server
Проверка работы Redis
Запустите клиент:
redis-cli
Проверьте соединение:
ping
Ответ:
PONG
Выйти:
exit
Основные команды Redis
Записать значение:
SET name "Roman"
Получить значение:
GET name
Удалить ключ:
DEL name
Посмотреть все ключи (не рекомендуется использовать на production с большим количеством данных):
KEYS *
Установить время жизни:
SET code 123456 EX 300
Получить оставшееся время:
TTL code
Очистить текущую базу:
FLUSHDB
Очистить все базы:
FLUSHALL
Внимание: команды
FLUSHDBиFLUSHALLудаляют данные без возможности восстановления.
Настройка Redis
Основной файл конфигурации:
/etc/redis/redis.conf
Полезные параметры:
Привязка к интерфейсу:
bind 127.0.0.1
Защищенный режим:
protected-mode yes
Пароль (если требуется):
requirepass MyStrongPassword
После изменения конфигурации:
sudo systemctl restart redis-server
Установка PHP-расширения Redis
Для Laravel потребуется расширение PHP.
Установите его:
sudo apt install php8.4-redis -y
Проверьте:
php -m | grep redis
Если вывод содержит redis, расширение успешно подключено.
Установка клиента Redis через Composer
Laravel поддерживает два клиента:
PhpRedis (рекомендуется);
Predis.
Для установки Predis выполните:
composer require predis/predis
Если используется расширение PhpRedis, дополнительная библиотека обычно не требуется.
Настройка Laravel
Откройте файл:
.env
Добавьте или измените параметры:
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
После изменения очистите кеш конфигурации:
php artisan optimize:clear
Использование Redis в Laravel
Кеширование
Сохранить значение:
use Illuminate\Support\Facades\Cache;
Cache::put('site_name', 'NesterWeb', 600);
Получить значение:
$name = Cache::get('site_name');
Удалить:
Cache::forget('site_name');
Использование фасада Redis
use Illuminate\Support\Facades\Redis;
Redis::set('username', 'Roman');
echo Redis::get('username');
Очереди Laravel
В файле .env:
QUEUE_CONNECTION=redis
Создать задачу:
php artisan make:job SendEmailJob
Запустить обработчик:
php artisan queue:work
Для production рекомендуется использовать Supervisor для автоматического запуска и контроля очередей.
Хранение сессий
В .env:
SESSION_DRIVER=redis
Laravel автоматически начнет хранить пользовательские сессии в Redis.
Ограничение количества запросов
Laravel позволяет использовать Redis для реализации Rate Limiting.
Например:
RateLimiter::attempt(
'login:'.$request->ip(),
5,
fn () => true
);
Это ограничит количество попыток авторизации для одного IP-адреса.
Мониторинг Redis
Количество клиентов:
INFO clients
Использование памяти:
INFO memory
Статистика:
INFO stats
Просмотр всех разделов:
INFO
Полезные команды Redis
Информация о сервере:
INFO
Размер памяти:
MEMORY STATS
Количество ключей:
DBSIZE
Просмотр конфигурации:
CONFIG GET *
Частые ошибки
Connection refused
Проверьте:
sudo systemctl status redis-server
Redis extension not loaded
Проверьте:
php -m | grep redis
Class Redis not found
Обычно причина:
отсутствует расширение PhpRedis;
либо установлен Predis, но неверно указан
REDIS_CLIENT.
Laravel не подключается к Redis
Очистите кеш конфигурации:
php artisan optimize:clear
Также убедитесь, что параметры в .env соответствуют настройкам сервера Redis.
Советы по безопасности
Чтобы Redis работал безопасно:
не открывайте порт 6379 в интернет без необходимости;
оставляйте
protected-mode yes;используйте сложный пароль, если сервер доступен по сети;
ограничивайте доступ через файрвол;
регулярно обновляйте Redis до актуальной версии;
не используйте команду
KEYS *на production-серверах с большим количеством ключей — вместо нее применяйтеSCAN.
Заключение
Redis — один из самых эффективных инструментов для повышения производительности веб-приложений. Он позволяет значительно снизить нагрузку на базу данных, ускорить обработку запросов и обеспечить стабильную работу приложений под высокой нагрузкой.
В Laravel Redis интегрирован практически во все ключевые компоненты: кеширование, сессии, очереди, ограничение запросов и работа с событиями. Освоив его установку и базовую настройку, вы получите мощный инструмент для создания быстрых и масштабируемых веб-приложений.