redis-cli pingпроверить, что сервер жив (ответ PONG)
redis-cli info memoryтекущее потребление памяти
redis-cli --bigkeysнайти самые крупные ключи
redis-cli --scan --pattern 'x:*'безопасный обход ключей, не блокирует сервер
redis-cli slowlog get 1010 последних медленных команд
redis-cli config set maxmemory 512mbизменить параметр на лету
Обзор
Redis — быстрое хранилище ключ-значение в оперативной памяти (кэш, очереди,
сессии, брокер для Channels/Celery). Служба redis-server под systemd,
порт 6379, конфиг /etc/redis/redis.conf.
bash
systemctl status redis-server
redis-cli ping # → PONG, если жив
ss -tlnp | grep 6379 # слушает ли (см. ss)
Конфигурация
Ключевое в /etc/redis/redis.conf:
bind 127.0.0.1 # слушать только локально (безопасно по умолчанию)
requirepass СЕКРЕТ # пароль (ОБЯЗАТЕЛЬНО, если открыт по сети)
maxmemory 256mb
maxmemory-policy allkeys-lru # что выкидывать при заполнении (для кэша)
appendonly yes # персистентность AOF (durable)
save 900 1 # RDB-снапшот: если ≥1 изменение за 900с
RDB — периодические снапшоты (компактно, можно потерять последние секунды).
AOF (appendonly yes) — журнал операций (durable, восстановление точнее).
Менять на лету без рестарта: redis-cli config set maxmemory 512mb + config rewrite.
После правки файла — sudo systemctl restart redis-server.
Рецепты
1
redis-cli
bash
redis-cli # интерактивная консоль
redis-cli -a СЕКРЕТ # с паролем (или AUTH внутри)
redis-cli info server # версия, аптайм
redis-cli info memory # потребление памяти
redis-cli info clients # число подключений
redis-cli dbsize # число ключей
redis-cli --scan --pattern 'x:*' # БЕЗОПАСНЫЙ обход ключей (не блокирует)
redis-cli set k v ex 60 # записать ключ со сроком жизни 60 секунд
redis-cli get k # прочитать ключ
redis-cli ttl k # сколько секунд осталось жить ключу
redis-cli del k # удалить ключ
redis-cli --bigkeys # найти крупные ключи (что ест память)
redis-cli monitor # поток ВСЕХ команд (отладка; даёт нагрузку!)
redis-cli slowlog get 10 # 10 последних медленных команд
Неполадки
5
СимптомПричина и решение
Could not connect to Redis (6379)
Служба не запущена (systemctl status redis-server) или слушает только 127.0.0.1,
а клиент идёт по сети. Для сети — поправь bind + обязательноrequirepass
(открытый Redis = мгновенный взлом).
OOM / выросло потребление памяти
redis-cli info memory, --bigkeys. Для кэша задай maxmemory + maxmemory-policy,
иначе Redis съест всю RAM и его убьёт OOM-killer (см. memory-swap).
Данные пропали после рестарта
По умолчанию данные только в памяти. Включи персистентность (appendonly yes и/или
save), если данные важны.
Тормозит / высокая задержка
redis-cli --latency, slowlog get. Частые причины: KEYS/SMEMBERS по огромным
структурам, swap (Redis НЕ должен свопиться — см. memory-swap), фоновый
RDB-fork при нехватке памяти.
NOAUTH Authentication required
Задан requirepass — подключайся redis-cli -a СЕКРЕТ или AUTH первой командой.
Опасно
KEYS * перечисляет все ключи и блокирует сервер, пока не закончит — на
базе с миллионами ключей это ощущается как полный отказ Redis для всех
клиентов сразу; вместо неё используй --scan, который не блокирует.
FLUSHALL/FLUSHDB стирают все данные немедленно и без подтверждения — нет
шага «точно?» и нет отмены. Redis без bind 127.0.0.1 и без requirepass,
открытый в сеть, компрометируется почти мгновенно: не публикуй порт 6379
наружу без пароля.
См. также
systemctl — Управление службами systemd — start/stop/restart/status/enable/reload.
ss — Кто слушает порты и какие соединения открыты — современная замена netstat.