digitalization-2025-10/redis.md

5.0 KiB
Raw Permalink Blame History

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) можно добавить позже по мере необходимости.