beeline/yii2-tiered-cache
Composer 安装命令:
composer require beeline/yii2-tiered-cache
包简介
Multi-tiered caching component for Yii2 with circuit breaker protection and automatic failover
README 文档
README
Многоуровневый компонент кеширования для Yii2 с защитой через circuit breaker и автоматическим переключением слоев.
Возможности
- Многоуровневая архитектура кеша: Несколько слоев кеша (L1, L2, L3, ...) с автоматическим переключением при отказах
- Защита через circuit breaker: Каждый слой защищен circuit breaker для предотвращения каскадных сбоев
- Гибкие стратегии записи: Сквозная запись (во все слои) или запись в первый слой
- Интеллектуальное восстановление: Автоматическое заполнение слоев после восстановления
- Управление TTL: Переопределение TTL для каждого слоя для оптимального использования ресурсов
- Поддержка зависимостей Yii2: Полная поддержка TagDependency и других механизмов зависимостей Yii2
- Обратная совместимость: Режим авто-обертки для бесшовной миграции со стандартного кеша Yii2
Установка
composer require beeline/yii2-tiered-cache
Требования
- PHP 8.4 или выше
- Yii2 2.0.45 или выше (для совместимости с PHP 8.x)
Базовое использование
Конфигурация
'cache' => [ 'class' => \Beeline\TieredCache\Cache\TieredCache::class, 'layers' => [ [ 'cache' => ['class' => \yii\caching\ApcCache::class, 'useApcu' => true], 'ttl' => 300, // 5 минут для L1 ], [ 'cache' => ['class' => \yii\caching\RedisCache::class, 'redis' => 'redis'], ], [ 'cache' => ['class' => \yii\caching\DbCache::class, 'db' => 'db'], ], ], ],
Стандартные операции с кешем
// Установить значение Yii::$app->cache->set('key', 'value', 3600); // Получить значение $value = Yii::$app->cache->get('key'); // Удалить значение Yii::$app->cache->delete('key'); // Очистить все слои Yii::$app->cache->flush();
Использование с TagDependency
use yii\caching\TagDependency; // Установить с зависимостью Yii::$app->cache->set('user:123', $userData, 3600, new TagDependency(['tags' => ['user-cache', 'user-123']]) ); // Инвалидировать по тегу TagDependency::invalidate(Yii::$app->cache, 'user-cache');
Параметры конфигурации
Стратегии записи
WRITE_THROUGH (по умолчанию) - Запись во все доступные слои:
'writeStrategy' => \Beeline\TieredCache\Cache\TieredCache::WRITE_THROUGH,
WRITE_FIRST - Запись только в первый доступный слой:
'writeStrategy' => \Beeline\TieredCache\Cache\TieredCache::WRITE_FIRST,
Стратегии восстановления
RECOVERY_POPULATE (по умолчанию) - Активное заполнение восстановленных слоев:
'recoveryStrategy' => \Beeline\TieredCache\Cache\TieredCache::RECOVERY_POPULATE,
RECOVERY_NATURAL - Естественное заполнение слоев:
'recoveryStrategy' => \Beeline\TieredCache\Cache\TieredCache::RECOVERY_NATURAL,
Конфигурация Circuit Breaker
'layers' => [ [ 'cache' => ['class' => \yii\caching\RedisCache::class, 'redis' => 'redis'], 'circuitBreaker' => [ 'failureThreshold' => 0.5, // Открыть при 50% отказов 'windowSize' => 10, // Отслеживать последние 10 запросов 'timeout' => 30, // Повторить попытку через 30 секунд 'successThreshold' => 1, // Закрыть после 1 успеха ], ], ],
Переопределение TTL для слоя
'layers' => [ [ 'cache' => ['class' => \yii\caching\ApcCache::class, 'useApcu' => true], 'ttl' => 300, // Переопределение: максимум 5 минут для этого слоя ], ],
Продвинутое использование
Собственный Circuit Breaker
'defaultBreakerClass' => \Beeline\TieredCache\Resilience\CircuitBreaker::class,
Строгий режим
Отклонение необернутых значений для согласованности формата данных:
'strictMode' => true,
Мониторинг состояния слоев
$status = Yii::$app->cache->getLayerStatus(); foreach ($status as $layer) { echo "Слой {$layer['index']}: {$layer['class']}\n"; echo "Состояние: {$layer['state']}\n"; // closed, open, half_open echo "Отказы: {$layer['stats']['failures']}\n"; }
Ручное управление Circuit Breaker
// Принудительно отключить слой (тестирование/обслуживание) Yii::$app->cache->forceLayerOpen(1); // Принудительно включить слой Yii::$app->cache->forceLayerClose(1); // Сбросить все circuit breaker Yii::$app->cache->resetCircuitBreakers();
Архитектура
Принцип работы
Операции чтения (get):
- Проверка доступности первого слоя (circuit breaker)
- Попытка чтения из первого доступного слоя
- При успехе: опционально заполнить верхние слои (RECOVERY_POPULATE)
- При отказе: попытка следующего слоя
- Запись результата в circuit breaker
Операции записи (set):
- WRITE_THROUGH: Запись во все доступные слои
- WRITE_FIRST: Запись только в первый доступный слой
Операции удаления:
- Всегда удаление из всех слоев (независимо от стратегии записи)
Состояния Circuit Breaker
CLOSED: Нормальная работа, запросы проходят
OPEN: Слишком много отказов, запросы блокируются
HALF_OPEN: Тестирование восстановления, ограниченное количество запросов
Отказоустойчивость
При отказе слоя кеша:
- Circuit breaker фиксирует отказ
- После N отказов circuit открывается (слой пропускается)
- Запросы автоматически направляются к следующему доступному слою
- После таймаута circuit переходит в состояние HALF_OPEN
- Успешный запрос закрывает circuit (слой восстановлен)
Преимущества
- Высокая доступность: Автоматическое переключение предотвращает недоступность кеша
- Производительность: Нет ожидания таймаутов при известных отказах
- Плавная деградация: Система работает даже при отказе слоев кеша
- Быстрое восстановление: Автоматическое обнаружение и восстановление отказавших слоев
- Оптимизация ресурсов: TTL для каждого слоя для эффективного использования памяти
Тестирование
# Установка зависимостей composer install # Запуск тестов vendor/bin/phpunit
Лицензия
GNU Lesser General Public License 3.0
Ссылки
beeline/yii2-tiered-cache 适用场景与选型建议
beeline/yii2-tiered-cache 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「cache」 「yii2」 「failover」 「circuit-breaker」 「resilience」 「multi-tier」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 beeline/yii2-tiered-cache 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 beeline/yii2-tiered-cache 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 beeline/yii2-tiered-cache 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
repository php library
A custom URL rule class for Yii 2 which allows to create translated URL rules
Laravel 5 - Repositories to the database layer
A bundle to create failover Flysystem adapters.
Redis Sentinel connector for Laravel with runtime failover and retry support.
SCEditor, a lightweight WYSIWYG BBCode & HTML editor extension for Yii 2.0 Framework
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: LGPL-3.0-or-later
- 更新时间: 2025-11-06