Управление кэшем
Эндпоинты для управления кэшем Redis: статистика, инвалидация, прогрев, конфигурация.
GET /cache/statistics
Статистика кэша: количество записей, попадания, промахи, размер.
Успешный ответ (200)
json
{
"success": true,
"data": {
"total_entries": 2847,
"active_entries": 2541,
"expired_entries": 306,
"hits": 84732,
"misses": 3210,
"hit_ratio": 96.35,
"memory_usage_bytes": 4194304,
"memory_usage_human": "4 MB",
"uptime_seconds": 86400,
"oldest_entry_age": "2h15m",
"average_ttl_remaining": "3m42s",
"last_cleanup": "2026-06-11T12:55:00Z"
}
}GET /cache/config
Текущая конфигурация кэша.
Успешный ответ (200)
json
{
"success": true,
"data": {
"enabled": true,
"default_ttl": 300,
"max_entries": 10000,
"compression_enabled": true,
"compression_threshold": 1024,
"cleanup_interval": 60,
"memory_cache_enabled": true,
"redis_available": true
}
}PUT /cache/config
Обновление конфигурации кэша. Все поля опциональны.
Тело запроса
json
{
"default_ttl": 600,
"max_entries": 20000,
"enable_compression": true,
"compression_threshold": 2048,
"cleanup_interval": 120,
"enable_memory_cache": false
}Успешный ответ (200)
json
{
"success": true,
"message": "Конфигурация кэша обновлена"
}POST /cache/invalidate
Инвалидация записей кэша. Поддерживает несколько режимов.
Типы инвалидации
| Тип | Параметры | Описание |
|---|---|---|
key | key | Инвалидация конкретного ключа |
slo | slo_id | Инвалидация всех записей по SLO |
pattern | pattern | Инвалидация по glob-паттерну |
expired | — | Очистка истёкших записей |
all | — | Полная очистка кэша |
Тело запроса
json
{
"type": "pattern",
"pattern": "slo:*:metrics",
"key": "",
"slo_id": 0
}Успешный ответ (200)
json
{
"success": true,
"message": "Кэш инвалидирован",
"data": {
"type": "pattern",
"invalidations": 42,
"timestamp": "2026-06-11T13:00:00Z"
}
}POST /cache/warmup
Прогревание кэша — предварительная загрузка результатов Prometheus-запросов.
Тело запроса
json
{
"queries": [
{
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m])) / sum(rate(http_requests_total[5m]))",
"slo_id": 1,
"time_window": "1h",
"ttl": 600000000000
}
]
}Поле ttl указывается в наносекундах (600000000000 = 10 минут). Если не указано, используется значение из конфигурации (5 минут).
Успешный ответ (200)
json
{
"success": true,
"message": "Кэш прогрет",
"data": {
"queries_warmed": 1,
"timestamp": "2026-06-11T13:00:00Z"
}
}GET /cache/entries
Список записей кэша с фильтрацией и пагинацией.
Параметры запроса
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
page | int | 1 | Номер страницы |
page_size | int | 20 | Количество на странице (макс. 100) |
slo_id | int | — | Фильтр по SLO |
fresh | bool | — | Только свежие записи |
Успешный ответ (200)
json
{
"success": true,
"data": {
"entries": [
{
"key": "slo:1:metrics:1h",
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m]))",
"slo_id": 1,
"time_window": "1h",
"created_at": "2026-06-11T12:00:00Z",
"expires_at": "2026-06-11T12:05:00Z",
"is_fresh": true,
"size_bytes": 256
}
],
"total": 2541,
"page": 1,
"page_size": 20,
"has_next": true
}
}GET /cache/entry/:key
Получение конкретной записи по ключу.
Успешный ответ (200)
json
{
"success": true,
"data": {
"key": "slo:1:metrics:1h",
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m]))",
"slo_id": 1,
"time_window": "1h",
"result": { "value": 99.943 },
"created_at": "2026-06-11T12:00:00Z",
"expires_at": "2026-06-11T12:05:00Z"
}
}Ошибки
| Код | Причина |
|---|---|
| 404 | Ключ не найден |
| 400 | Ключ не указан |
POST /cache/entry
Ручное создание записи в кэше.
Тело запроса
json
{
"key": "slo:1:metrics:7d",
"query": "sum(rate(http_requests_total{status=~\"2..\"}[5m])) / sum(rate(http_requests_total[5m]))",
"slo_id": 1,
"time_window": "7d",
"result": { "value": 99.89 },
"ttl": 3600000000000
}DELETE /cache/entry/:key
Удаление записи из кэша по ключу.
Успешный ответ (200)
json
{
"success": true,
"message": "Запись кэша удалена"
}Сводная таблица
| Метод | Путь | Описание |
|---|---|---|
| GET | /cache/statistics | Статистика кэша |
| GET | /cache/config | Конфигурация кэша |
| PUT | /cache/config | Обновление конфигурации |
| POST | /cache/invalidate | Инвалидация записей |
| POST | /cache/warmup | Прогревание кэша |
| GET | /cache/entries | Список записей с пагинацией |
| GET | /cache/entry/:key | Получение записи по ключу |
| POST | /cache/entry | Создание записи |
| DELETE | /cache/entry/:key | Удаление записи |