# temporal_redis

**temporal_redis** — это лёгкая асинхронная библиотека для хранения результатов Temporal Workflow в Redis.

Поддерживает:

- Redis Hash (workflow_id → JSON-данные)
- Глобальный TTL (по умолчанию сутки)
- Переопределяемые параметры (`redis_url`, `prefix`, `ttl`)
- Retry-политику с экспоненциальным бэкоффом (через `tenacity`)
- Пакетные операции (`store_results`, `get_results`, `delete_results`, …)
- Прямая совместимость с `pydantic.BaseModel`

## Установка

```bash
pip install temporal-redis
```

## Быстрый старт

```python
from temporal_redis import configure, store_result, get_result

# Настройка (опционально)
configure(
    redis_url="redis://localhost:6379",
    prefix="myapp:result:",
    default_ttl=3600,  # 1 час
)

# Сохранение результата
await store_result("workflow-123", {"value": 42})

# Получение результата
result = await get_result("workflow-123")
print(result)  # {'value': 42}
```

## API

| Функция                     | Описание |
|-----------------------------|----------|
| `configure(...)`            | Настроить redis_url, prefix и TTL |
| `store_result(id, data)`    | Сохранить результат по ID |
| `get_result(id)`            | Получить результат (или ошибка `ResultNotFoundError`) |
| `store_results(dict)`       | Пакетное сохранение (workflow_id → data) |
| `get_results(list)`         | Пакетное получение |
| `exists_result(id)`         | Проверка наличия результата |
| `exists_results(list)`      | Пакетная проверка |
| `delete_result(id)`         | Удалить один результат |
| `delete_results(list)`      | Пакетное удаление |

## Исключения

- `ResultNotFoundError` — если результата нет в Redis.

## Зависимости

- `redis`
- `orjson`
- `pydantic`
- `tenacity`
