Установка Redis и первое подключение
Прежде чем разбирать структуры данных, нужно поднять Redis и подключиться к нему. Это пять минут.
Лучший способ понять инструмент — потрогать его руками. Поднимите Redis локально и выполните первую команду уже сегодня.
Redis устанавливается несколькими способами. Для обучения и разработки проще всего Docker — один контейнер, ничего не засоряет систему. Для локальной работы подойдёт и пакетный менеджер.
Запуск через Docker
Если у вас установлен Docker, поднять Redis — одна команда:
# Запустить Redis 7 в фоне на стандартном порту 6379
docker run -d --name my-redis -p 6379:6379 redis:7
# Проверить, что контейнер работает
docker ps
# Зайти внутрь и открыть redis-cli
docker exec -it my-redis redis-cli
Установка нативно
# macOS (Homebrew)
brew install redis
brew services start redis
# Ubuntu / Debian
sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server
# Проверка
redis-cli ping
Если в ответ на redis-cli ping сервер сказал PONG — всё работает.
Первое подключение и команды
redis-cli — это интерактивная консоль. Внутри можно отправлять команды прямо как текст:
127.0.0.1:6379> SET greeting "Привет, Redis!"
OK
127.0.0.1:6379> GET greeting
"Привет, Redis!"
127.0.0.1:6379> EXISTS greeting
(integer) 1
127.0.0.1:6379> DEL greeting
(integer) 1
127.0.0.1:6379> GET greeting
(nil)
Команды Redis не чувствительны к регистру (set и SET работают одинаково), но по традиции их пишут заглавными. Ключи и значения — чувствительны к регистру.
Архитектура клиент-сервер
redis-cli сеть TCP redis-server
(клиент) --------------------> (порт 6379)
SET greeting "..." |
| RAM
<-------------------- [структуры]
OK
Redis — это сетевой сервер. Клиент (CLI, ваше приложение, библиотека) шлёт текстовые команды по протоколу RESP, сервер их обрабатывает и отвечает. Поэтому к одному Redis могут одновременно подключаться сотни приложений.
Как работает под капотом
Клиент и сервер общаются по протоколу RESP (REdis Serialization Protocol) — простой текстовый протокол поверх TCP. Когда вы пишете SET greeting "Привет", CLI кодирует это в RESP-формат и отправляет байты серверу. Сервер парсит команду, выполняет и отвечает. Из-за простоты протокола клиенты Redis есть практически для любого языка.
Частые ошибки
- Открыть Redis наружу без пароля. По умолчанию Redis слушает локально, но если выставить его в интернет без
requirepass— это дыра в безопасности. - Забыть, что порт 6379 уже занят другим инстансом — Docker откажется стартовать.
- Путать БД-индексы. Redis имеет 16 логических БД (0–15), переключение через
SELECT. Подключились к БД 1, а данные искали в БД 0.
Best practices
- Для разработки используйте Docker — изолированно и воспроизводимо.
- На любом окружении, доступном по сети, ставьте пароль через
requirepass. - Освойте
redis-cli: он покажет вам ровно то, что происходит, без слоёв абстракции вашего приложения.
Итог: Redis ставится за минуты — через Docker или пакетный менеджер. redis-cli — ваш главный инструмент исследования. Команды отправляются как текст по протоколу RESP. Теперь у вас есть рабочий Redis, и можно переходить к данным.
Полезные команды redis-cli для исследования
Помимо SET/GET, в redis-cli есть команды, которые помогают понять, что вообще происходит внутри сервера. Их стоит знать с самого начала:
DBSIZE # сколько ключей в текущей БД
TYPE mykey # какого типа значение (string, list, hash...)
TTL mykey # сколько секунд осталось ключу
INFO server # версия, режим, аптайм
INFO memory # потребление памяти
MONITOR # поток всех команд в реальном времени (только для отладки!)
FLUSHDB # очистить текущую БД (осторожно!)
MONITOR показывает каждую команду, которую сервер обрабатывает прямо сейчас — это бесценно при отладке «что моё приложение на самом деле шлёт в Redis». Но на проде он замедляет сервер, поэтому только для разработки.
Ещё один режим запуска redis-cli — выполнить одну команду из шелла, не входя в интерактив: redis-cli SET key value. Это удобно в скриптах. А флаг -n 1 подключит к логической БД номер 1 вместо нулевой. Освоив эти команды, вы перестанете воспринимать Redis как чёрный ящик и будете видеть его состояние напрямую.