Data Flow: Redis Service
Жизненный цикл операции
-
Построение ключа — вызывающий код создаёт типизированный ключ через подкласс
BaseRedisKey. Строка ключа валидируется при создании. -
Вызов операции — вызывается метод на соответствующем объекте операций (например,
service.hash.set_json(key, field, data)). -
Сериализация — для методов, работающих с JSON, операция сериализует Python-объекты в JSON-строки перед записью в Redis.
-
Redis-вызов — операция выполняет базовую корутину
redis-py(hset,set,xaddи т.д.). -
Обработка ошибок — любой
ConnectionError/TimeoutErrorподнимаетRedisConnectionError; другиеRedisErrorподнимаютRedisServiceError. Сырые исключения не проникают к вызывающему. -
Десериализация — при чтении операция десериализует сырые байты/строки Redis обратно в Python-типы.
Диаграмма последовательности
sequenceDiagram
participant App as Приложение
participant Key as BaseRedisKey
participant Op as Operations (например HashOperations)
participant Redis
App->>Key: MyKey(user_id=42).build()
Key-->>App: "user:42"
App->>Op: set_json("user:42", "profile", data)
Op->>Redis: HSET user:42 profile '{"name":"Alex"}'
Redis-->>Op: OK
Op-->>App: True
Note over Op,Redis: При ConnectionError → RedisConnectionError
Note over Op,Redis: При RedisError → RedisServiceError
Pipeline Flow
Для атомарных пакетов из нескольких операций PipelineOperations собирает команды и отправляет их за один round-trip:
sequenceDiagram
participant App as Приложение
participant Pipeline as PipelineOperations
participant Redis
App->>Pipeline: execute([cmd1, cmd2, cmd3])
Pipeline->>Redis: MULTI / cmd1 / cmd2 / cmd3 / EXEC
Redis-->>Pipeline: [result1, result2, result3]
Pipeline-->>App: список результатов