5.0 KiB
5.0 KiB
Redis в Docker: установка и базовые команды
Краткая инструкция по запуску Redis в Docker и использованию redis-cli.
Установка/запуск Redis в Docker
- Запустить Redis (порт 6379):
docker run -d --name redis -p 6379:6379 redis:7
- Перезапуск/остановка/удаление:
docker restart redis
docker stop redis
docker rm -f redis
Подключение к Redis
- Из контейнера (встроенный
redis-cli):
docker exec -it redis redis-cli
- С хоста (если установлен
redis-cli):
redis-cli -h 127.0.0.1 -p 6379
- Проверка доступности:
redis-cli -h 127.0.0.1 -p 6379 PING
# Ответ: PONG
Базовые команды (ключ-значение)
# Имена скважин
SET well:1001:name "Well-1001"
GET well:1001:name
# Счетчики добычи (баррели нефти)
SETNX counters:production:well:1001:bbl 0
INCR counters:production:well:1001:bbl
INCRBY counters:production:well:1001:bbl 250
DECR counters:production:well:1001:bbl
# Массовая запись/чтение параметров месторождения
MSET field:permian:name Permian field:permian:country USA field:permian:type oil
MGET field:permian:name field:permian:country field:permian:type
# Удаление и проверка существования
DEL field:permian:type
EXISTS well:1001:name
TTL counters:production:well:1001:bbl
Время жизни/истечение
# Кэш телеметрии датчика давления (истекает через 5 минут)
SET sensor:well:1001:pressure:psi "2850" EX 300
# Продлить TTL еще на 60 секунд
EXPIRE sensor:well:1001:pressure:psi 60
# Сделать запись постоянной
PERSIST sensor:well:1001:pressure:psi
Поиск ключей и очистка
KEYS well:*
Структуризация команд
1) Простые типы: строки и числа
# Строки состояния
SET well:1001:status "online"
GET well:1001:status
# Множественная запись паспортных данных скважины
MSET well:1001:field Permian well:1001:type oil well:1001:depth_m 3200
MGET well:1001:field well:1001:type well:1001:depth_m
# Только если ключ не существует (инициализация счетчика газа, тыс. куб. футов)
SETNX counters:gas:well:1001:mcf 0
# Инкременты/декременты
INCR counters:gas:well:1001:mcf
INCRBY counters:gas:well:1001:mcf 500
DECR counters:gas:well:1001:mcf
# Полезное: журнал операций
APPEND ops:log "start_pump;"
STRLEN ops:log
GETSET last:ops:timestamp "2025-10-28T10:00:00Z"
DEL ops:log well:1001:status
EXISTS counters:gas:well:1001:mcf
2) Списки (queues/стэки)
# Очередь работ по обслуживанию
LPUSH jobs:maintenance well:1001:inspect well:1002:replace_valve
RPUSH jobs:maintenance well:1003:calibrate_sensor
# Изъятие задач
LPOP jobs:maintenance
RPOP jobs:maintenance
# Диапазон и метаданные
LRANGE jobs:maintenance 0 -1
LLEN jobs:maintenance
LINDEX jobs:maintenance 0
# Блокирующие операции (ожидание новой задачи)
BLPOP jobs:maintenance 5
BRPOP jobs:maintenance 5
# Удаление конкретной задачи
LREM jobs:maintenance 0 well:1002:replace_valve
3) Хэши (похожие на объекты)
# Паспорт скважины
HSET well:1001 name "Well-1001" field "Permian" status "online" depth_m 3200
HGET well:1001 name
HMGET well:1001 field status depth_m
HGETALL well:1001
# Управление полями
HDEL well:1001 status
HEXISTS well:1001 field
HLEN well:1001
# Счетчики в хэше (например, количество запусков насоса)
HINCRBY well:1001 metrics:pump_starts 1
4) Множества (уникальные элементы, без порядка)
# Скважины по месторождениям
SADD field:permian:wells 1001 1002
SADD field:west_siberia:wells 1002 1003
SMEMBERS field:permian:wells
SCARD field:west_siberia:wells
# Операции множеств (пересечения/объединения между полями)
SUNION field:permian:wells field:west_siberia:wells # 1001 1002 1003
SINTER field:permian:wells field:west_siberia:wells # 1002
SDIFF field:permian:wells field:west_siberia:wells # 1001
# Теги оборудования на скважине
SADD well:1001:tags oil onshore artificial_lift
SISMEMBER well:1001:tags oil
Примечание: отсортированные множества (ZSET) и другие структуры (Streams, Bitmaps, HyperLogLog) можно добавить позже по мере необходимости.