Redis в Laravel — штука удобная, но почему-то про него пишут так, будто это святой грааль оптимизации. Ставь Redis — и сайт полетит. Нет. Redis не спасёт кривую архитектуру и не сделает твой код быстрее, если ты в кэш суёшь мусор. Он просто очень шустрый склад для данных в памяти.
В Laravel Redis втыкается легко, но важно понимать: это не игрушка. Упал Redis — упал кэш, сессии, очереди. Привет, прод.
Настройка: ничего сложного, но есть нюансы
Подключение к Redis в Laravel обычно выглядит так же банально, как установка npm-пакета:
composer require predis/predis
В .env:
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null
REDIS_PORT=6379 И вроде всё. Но тут первый подводный камень: predis/predis — это чисто PHP-библиотека. Работает, но на высоких нагрузках лучше юзать phpredis (расширение на C). Разница заметна. Predis на проде может начать дышать как астматик, если у тебя сотни тысяч ключей в секунду.
Основные операции: сладкая халява
Laravel даёт фасад Redis, и работаешь с ним как с обычным массивом:
Redis::set('name', 'Ilya');
$name = Redis::get('name');
Списки:
Redis::lpush('names', 'Ilya');
$name = Redis::lpop('names');
Хэши:
Redis::hset('user:1', 'name', 'Ilya');
$name = Redis::hget('user:1', 'name');
Синтаксис смешной, но в этом и кайф. Минус — если начнёшь всё хранить в Redis «на всякий случай», то внезапно обнаружишь, что твоя память скукожилась в ноль, а Redis сам себя прибил.
Кэш: спасение и проклятие
Laravel позволяет выбрать Redis как драйвер для кэша. Всё вроде красиво:
use Illuminate\Support\Facades\Cache;
Cache::put('key', 'value', 600);
$value = Cache::get('key');
И тут главная ловушка — кэш не лечит говнокод. Если ты каждый раз дергаешь базу без индексов, и думаешь «а, закэшу в Redis» — это не решение. Ты просто переложил проблему в память. Redis тоже не резиновый.
Сессии: аккуратнее с надеждой
Хранить сессии в Redis удобно — быстро и масштабируется. Настройка:
'driver' => env('SESSION_DRIVER', 'redis'),
Но знай: если у тебя Redis сдох — все юзеры разлогинились. Сюрприз. Поэтому нормальные проекты держат кластер или хотя бы реплику. А если у тебя один голый Redis на проде, то не удивляйся, когда манагер будет бегать с криками «почему все вылетели?!».
Очереди и pub/sub: кайф, пока не рухнул
Laravel любит Redis для очередей и pub/sub. Тут он реально shines. Но минус тот же: без мониторинга и резервов Redis становится точкой отказа. Упал Redis — очереди встали, фоновые задачи умерли, прод опять горит.
Итог: Redis — быстрый, но капризный
Redis в Laravel — классный инструмент, но не бог. Он не чинит архитектуру, не делает магии. Если ты хранишь в нём всё подряд и веришь, что это «ускорение», то будь готов к боли. Используй Redis для того, для чего он создан: кэш, сессии, очереди, временные данные. И всегда помни, что Redis — это память, а память заканчивается быстрее, чем кофе.
0 комментариев