Redis CLI: полезные команды для повседневной работы

Redis CLI: полезные команды для повседневной работы

Redis — это высокопроизводительная in-memory база данных, используемая для кэширования, хранения сессий, реализации очередей и других задач, требующих быстрого доступа к данным. Одним из ключевых инструментов взаимодействия с Redis является Redis CLI (Command Line Interface) — консольный клиент, позволяющий напрямую выполнять команды, управлять данными и диагностировать состояние сервера. Освоение основных и продвинутых команд CLI критически важно для разработчиков, DevOps-инженеров и SRE.

Redis CLI — это основной инструмент для администрирования и отладки Redis. Знание ключевых команд позволяет эффективно управлять данными, контролировать производительность и оперативно реагировать на проблемы.

Базовые команды Redis CLI: начало работы

Первый шаг в работе с Redis CLI — подключение к серверу. По умолчанию Redis запускается на localhost:6379. Подключиться можно через терминал командой:

redis-cli

Если Redis защищён паролем, используйте флаг -a:

redis-cli -a ваш_пароль

Для подключения к удалённому серверу укажите хост и порт:

redis-cli -h 192.168.1.100 -p 6380

После подключения вы попадаете в интерактивный режим, где можно выполнять команды. Простейшая команда — PING. Она проверяет доступность сервера:

> PING
PONG

Если вы получили PONG, соединение установлено успешно. Команда QUIT завершает сессию.
Для выполнения одной команды без входа в интерактивный режим используйте:

redis-cli GET user:123

Команда HELP выводит справку. Например, HELP @generic покажет все общие команды, а HELP SET — подробную информацию по команде установки значения.

Полезно знать: В Redis CLI регистр команд не важен, но принято использовать верхний регистр для лучшей читаемости.

Управление ключами

Ключи — основа структуры данных в Redis. Команда SET создаёт или перезаписывает значение:

SET session:abc123 "user_id=456"

Чтобы получить значение, используйте GET:

GET session:abc123

Команда DEL удаляет ключ:

DEL cache:temp_data

Можно удалять несколько ключей за раз:

DEL key1 key2 key3

Для проверки существования ключа — EXISTS:

> EXISTS user:100
(integer) 1

Значение 1 означает, что ключ существует, 0 — нет.
Команда KEYS позволяет искать ключи по шаблону:

KEYS user:* # все ключи, начинающиеся с "user:"

Однако использование KEYS на продакшене нежелательно — она блокирует сервер при большом объёме данных. Лучше использовать SCAN.

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

Redis поддерживает несколько типов данных. Правильное использование каждого типа повышает эффективность и производительность.

Строки (Strings)

Строки — самый простой тип. Хранят строковые или бинарные данные до 512 МБ. Помимо SET и GET, полезны:

  • INCR — увеличивает числовое значение на 1;
  • DECR — уменьшает на 1;
  • INCRBY — увеличивает на указанное число;
  • APPEND — добавляет строку к существующему значению.

Пример:

> SET counter 10
> INCR counter
(integer) 11
> APPEND message "Hello"
(integer) 5
«Используйте INCR и DECR для счётчиков просмотров, лайков или событий. Это атомарные операции — безопасно даже при высокой нагрузке.» — Алексей, DevOps-инженер

Хеши (Hashes)

Хеши позволяют хранить объекты в виде полей и значений. Удобны для профилей пользователей, настроек и метаданных.

  • HSET user:100 name "Ivan" email "ivan@example.com"
  • HGET user:100 name — получить одно поле;
  • HGETALL user:100 — получить все поля;
  • HDEL user:100 email — удалить поле.

Пример:

> HSET product:789 title "Ноутбук" price 45000
> HGET product:789 price
"45000"

Списки (Lists)

Списки — упорядоченные коллекции строк. Реализованы как двусвязные списки. Полезны для очередей, лент активности.

  • LPUSH mylist "first" — добавить в начало;
  • RPUSH mylist "last" — добавить в конец;
  • LPOP mylist — удалить и вернуть первый элемент;
  • RPOP mylist — удалить и вернуть последний;
  • LRANGE mylist 0 10 — показать первые 10 элементов.

Пример использования как очереди:

> LPUSH queue "task1"
> RPOP queue
"task1"

Множества (Sets)

Множества хранят уникальные неупорядоченные элементы. Идеальны для тегов, друзей, уникальных посетителей.

  • SADD tags:post1 "tech" "news" "ai"
  • SMEMBERS tags:post1 — показать все элементы;
  • SISMEMBER tags:post1 "ai" — проверить наличие;
  • SREM tags:post1 "news" — удалить элемент.

Операции объединения и пересечения:

  • SUNION set1 set2 — объединение;
  • SINTER set1 set2 — пересечение;
  • SDIFF set1 set2 — разница.

Отсортированные множества (Sorted Sets)

Sorted Sets — множества с весом (score). Элементы упорядочены по нему. Используются для рейтингов, лидербордов.

  • ZADD leaderboard 1000 "player1"
  • ZRANK leaderboard "player1" — позиция игрока;
  • ZREVRANGE leaderboard 0 9 WITHSCORES — топ-10 игроков с очками;
  • ZINCRBY leaderboard 50 "player1" — увеличить счёт.

Пример:

> ZADD scores 85 "Alice" 92 "Bob" 78 "Charlie"
> ZREVRANGE scores 0 2
1) "Bob"
2) "Alice"
3) "Charlie"
Полезно знать: Все команды, изменяющие данные, автоматически сохраняются в AOF-логе, если он включён. Это обеспечивает отказоустойчивость.

Инспекция и управление состоянием Redis

Для диагностики и мониторинга Redis предоставляет мощные команды.

INFO — детальная статистика

Команда INFO возвращает информацию о сервере, клиентских подключениях, памяти, постоянстве и т.д. Без параметров — всё сразу. Можно указать секцию:

  • INFO server — версия, ОС, время работы;
  • INFO memory — использование памяти, пиковые значения;
  • INFO stats — количество операций, hit/miss ratio;
  • INFO keyspace — статистика по ключам (сколько ключей в каждом слоте).

Пример:

> INFO memory
used_memory:1048576
used_memory_human:1.00M
maxmemory:2097152
maxmemory_policy:volatile-lru

Анализ used_memory и maxmemory помогает предотвратить исчерпание памяти.

DATABASES и KEYSPACE

Redis поддерживает 16 баз данных по умолчанию (от 0 до 15). Переключение:

SELECT 1

Проверить, сколько ключей в каждой БД:

> INFO keyspace
db0:keys=15,expires=3
db1:keys=8,expires=0
«Не злоупотребляйте несколькими базами данных. Вместо этого используйте осмысленные префиксы ключей (например, session:, cache:). Это упрощает миграции и репликацию.» — Марина, архитектор решений

CONFIG — управление настройками

Позволяет просматривать и изменять конфигурацию без перезапуска.

  • CONFIG GET maxmemory — текущее ограничение памяти;
  • CONFIG SET maxmemory 1gb — установить новое значение;
  • CONFIG REWRITE — сохранить изменения в конфигурационном файле (если используется).
Важно: не все параметры можно изменить динамически.

CLIENT LIST и KILL

CLIENT LIST показывает всех подключённых клиентов:

> CLIENT LIST
id=5 addr=127.0.0.1:50432 fd=8 name= age=120 ...

Можно найти «зависшие» подключения. Для принудительного отключения:

CLIENT KILL 127.0.0.1:50432

Также можно фильтровать по ID:

CLIENT KILL ID 5

Продвинутые функции CLI: мониторинг, скрипты, пайплайны

Redis CLI предлагает инструменты для глубокого анализа и оптимизации.

MONITOR — живая лента команд

Команда MONITOR выводит все операции в реальном времени:

> MONITOR
OK
1678886400.123456 [0 127.0.0.1:50430] "GET" "user:100"
1678886400.124567 [0 127.0.0.1:50431] "SET" "session:xyz" "..."

Полезно для отладки, но сильно нагружает сервер. Используйте кратко и только в тестовой среде.

DEBUG и MEMORY

Команды для анализа памяти и внутренней структуры:

  • MATCHING KEYS — показывает размер ключа в байтах:
MATCHING KEYS user:100
  • MEMORY USAGE user:100 — сколько памяти занимает ключ;
  • MEMORY STATS — детальная статистика по использованию памяти;
  • OBJECT encoding user:100 — способ кодирования значения (например, int, embstr).
  • Знание кодирования помогает оптимизировать хранение.

    Выполнение Lua-скриптов

    Redis поддерживает выполнение Lua-скриптов через EVAL и EVALSHA. Это позволяет выполнять сложные операции атомарно.
    Пример — увеличение счётчика, если он меньше 100:

    EVAL "if redis.call('GET', KEYS[1]) < ARGV[1] then return redis.call('INCR', KEYS[1]) else return 0 end" 1 counter 100
    

    Для повторного использования: сначала загрузите скрипт:

    SCRIPT LOAD "return redis.call('PING')"

    Он вернёт SHA1-хеш. Выполняйте по хешу:

    EVALSHA abc123def... 0
    Полезно знать: Lua-скрипты выполняются в одном потоке. Избегайте долгих циклов — они блокируют весь сервер.

    Пайплайны и массовые операции

    Пайплайнирование позволяет отправить несколько команд за один сетевой запрос, снижая задержку.
    В CLI пайплайн можно смоделировать через stdin:

    echo -e "PINGnPINGnPING" | redis-cli --pipe
    

    Или использовать в скриптах:

    printf "SET k1 v1nSET k2 v2n" | redis-cli --pipe
    

    Команда --pipe также проверяет целостность данных.

    Типичные ошибки и как их избежать

    Даже опытные специалисты допускают ошибки при работе с Redis CLI.

    Использование KEYS в production

    Как уже упоминалось, KEYS * блокирует сервер при большом количестве ключей. Вместо этого используйте SCAN:

    > SCAN 0 MATCH user:* COUNT 100
    1) "456"
    2) 1) "user:100"
     2) "user:101"
    

    SCAN работает итеративно и не блокирует сервер.

    Игнорирование политики maxmemory

    Если maxmemory достигнут, Redis начинает удалять ключи. Политика задаётся через maxmemory-policy. Распространённые значения:

    Политика
    Описание
    noeviction
    Возвращает ошибку при превышении памяти
    allkeys-lru
    Удаляет наименее недавно использованные ключи
    volatile-lru
    То же, но только для ключей с TTL
    allkeys-random
    Случайное удаление любых ключей

    Выбор политики зависит от сценария. Для кэша подходит allkeys-lru, для сессий — volatile-lru.

    Неправильное использование EXPIRE

    Команда EXPIRE key seconds устанавливает время жизни ключа. Ошибки:

    • Установка TTL на ключ, который не существует — команда вернёт 0, но ошибки не будет;
    • Обновление TTL каждый раз при обращении — может замедлить работу;
    • Забыть, что PERSIST удаляет TTL.

    Лучше устанавливать TTL при создании:

    SETEX session:abc 3600 "data"

    Отсутствие мониторинга

    Не проверяя INFO memory и INFO stats, можно пропустить рост потребления памяти или падение hit ratio. Регулярно анализируйте:

    • Соотношение keyspace_hits / keyspace_misses — чем выше hit ratio, тем эффективнее кэш;
    • Рост used_memory — возможна утечка ключей;
    • Количество подключений — резкий рост может указывать на проблему в приложении.

    Экспертное мнение

    При работе с Redis CLI следует придерживаться ряда принципов. Во-первых, всегда используйте осмысленные префиксы для ключей — это упрощает чтение, отладку и масштабирование. Во-вторых, избегайте выполнения медленных команд в рабочее время. Команды вроде KEYS, HGETALL на больших хешах или SMEMBERS могут вызвать задержки. Вместо них применяйте итеративные аналоги: SCAN, HSCAN, SSCAN.
    Автоматизация — ключ к надёжности. Скрипты на Bash, Python или Go, использующие redis-cli, позволяют регулярно выполнять резервное копирование, очистку устаревших данных или проверку состояния. Также рекомендуется включать AOF (Append Only File) для защиты от потери данных.
    Помните: Redis — однопоточный. Даже одна тяжёлая команда может заблокировать сервер на доли секунды. Тестируйте новые команды в staging-среде. Используйте --latency или --intrinsic-latency в CLI для оценки производительности системы.

    Вопросы и ответы

    Как проверить, сколько времени работает Redis?
    Используйте INFO server и найдите поле uptime_in_seconds. Оно показывает, сколько секунд сервер работает с момента последнего запуска.
    Можно ли выполнить команду Redis без входа в интерактивный режим?
    Да. Просто передайте команду после redis-cli: redis-cli GET config:theme. Это удобно для скриптов и автоматизации.
    Как безопасно очистить базу данных?
    Используйте FLUSHDB для очистки текущей БД или FLUSHALL — для всех. Будьте осторожны: эти команды необратимы. Перед выполнением убедитесь, что резервная копия создана.
    Что делать, если Redis CLI не подключается?
    Проверьте: запущен ли сервер (redis-server), открыт ли порт, правильные ли хост и порт в команде, нет ли фаервола. Также убедитесь, что в конфиге не стоит bind только на 127.0.0.1, если подключение внешнее.
    Как отследить, какие команды выполняются чаще всего?
    Используйте INFO commandstats. Он показывает счётчики вызовов для каждой команды. После анализа можно сбросить статистику: CONFIG RESETSTAT.

    Заключение

    Redis CLI — это мощный и гибкий инструмент, необходимый для эффективной работы с Redis. От базовых операций вроде SET и GET до продвинутых функций вроде MONITOR, SCAN и выполнения Lua-скриптов — владение этими командами позволяет не только управлять данными, но и диагностировать проблемы, оптимизировать производительность и обеспечивать стабильность системы.

    Освоение Redis CLI — это инвестиция в вашу экспертизу как разработчика или инженера. Чем глубже вы понимаете возможности CLI, тем увереннее чувствуете себя в кризисных ситуациях и при масштабировании систем.
    • Используйте INFO и CONFIG для диагностики и настройки без перезапуска.
    • Заменяйте KEYS на SCAN в production-средах.
    • Применяйте осмысленные префиксы ключей и контролируйте использование памяти.
    • Тестируйте тяжёлые команды в staging, помня об однопоточной природе Redis.
    • Автоматизируйте рутинные операции через скрипты с использованием redis-cli.
    ⚠️ Дисклеймер — нажмите, чтобы развернуть

    Материалы, опубликованные в разделе «Блог» на сайте RU DESIGN SHOP (rudesignshop.ru), носят исключительно информационный и ознакомительный характер и не являются руководством к действию, финансовой рекомендацией, медицинской услугой, ветеринарным назначением либо рекламой товаров и услуг, включая азартные игры. Публикации не содержат призывов к участию в азартных играх и не направлены на продвижение соответствующих операторов.

    Безопасность применения товаров и веществ: при использовании строительных материалов, бытовой химии, пестицидов и агрохимикатов необходимо строго следовать инструкциям производителя и действующему законодательству Российской Федерации, включая Федеральный закон РФ от 19.07.1997 № 109-ФЗ «О безопасном обращении с пестицидами и агрохимикатами».

    Упоминание товарных знаков, брендов и организаций носит исключительно информационный характер и не означает наличие партнёрских отношений или одобрения со стороны правообладателей.

    Материалы, содержащие сведения о медицинских, ветеринарных или косметических средствах, представлены в справочных целях и не являются медицинской консультацией или назначением. Перед применением рекомендуется обратиться к врачу, ветеринарному специалисту или иному сертифицированному профессионалу.

    Возрастные ограничения: материалы, содержащие сведения о продукции категории 18+, включая алкоголь или азартные игры, предназначены исключительно для совершеннолетней аудитории и публикуются в информационных целях.

    Правовая ответственность: решения, принятые на основе опубликованной информации, пользователь принимает самостоятельно и на свой риск; редакция и авторы несут ответственность в пределах, установленных законодательством Российской Федерации.

    Редакция не допускает публикаций, содержащих пропаганду экстремизма, терроризма, наркотических средств или суицида; подобные материалы подлежат немедленному удалению.

    Упоминание организаций с ограниченным статусом: компания Meta Platforms Inc. (социальные сети Facebook и Instagram) признана экстремистской организацией решением суда РФ, её деятельность запрещена на территории Российской Федерации; любые упоминания приводятся исключительно в информационных целях.

    Авторские права и источники: информация собирается из открытых источников; её актуальность указывается на дату публикации и может изменяться.

    Изображения и иллюстрации используются на условиях, разрешённых правообладателями. При возникновении претензий редакция готова оперативно рассмотреть обращение и внести необходимые изменения.

    Персональные данные и cookies: сайт использует cookies и обрабатывает персональные данные пользователей в соответствии с Федеральным законом № 152-ФЗ «О персональных данных» и Политикой конфиденциальности RU DESIGN SHOP.

    Мнения авторов могут не совпадать с позицией государственных органов или коммерческих организаций, упомянутых в материалах.

     

    РЕКОМЕНДУЕМ
    Товары от российских производителей
    Торшер ArcOsmo Two GLODE
    Выберите параметры Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.

    Торшер ArcOsmo Two GLODE

    Диапазон цен: 15100  руб. – 17600  руб.
    Настенный светильник Eur LW v7804 GLODE
    Выберите параметры Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.

    Настенный светильник Eur LW v7804 GLODE

    27711  руб.