Как в Symfony Component Cache проверить запущен ли Redis?

На проекте используется Редис в качестве key:value хранилища (хранится информация об авторизации)

Точнее сказать, используется компонент Symfony Component Cache и RedisAdapter

Я сталкиваюсь с такой ситуацией, что иногда у клиента падает редис или они забывают его поднять :)
Никак на это повлиять не могу, но они начинают пушить баги, а на самом деле проблема в том что недоступен коннект к редису.

Нужно каким то образом сделать проверку что редис работает
написать какой то декоратор в котором реализовать проверку isConnected

Только я вообще не понимаю в какую сторону копать
должно получится что то вроде
Decorator
Get
   Client->connect
    If notConnected
         Throw exception
    Else
          Return client.get


Но проблема в том что я не понимаю как получить доступ к Client
Народ говорит что ничего проверять не нужно, нужно следить за тем чтобы редис работал и т.д
У себя я могу это сделать но на сторону клиента никак повлиять не могу

вот пример:
#config/packages/cache.yaml
framework:
    cache:
        # Redis
        app: cache.adapter.redis
        default_redis_provider: '%env(resolve:REDIS_URL)%'


<?php
use Symfony\Component\Cache\Adapter\AdapterInterface;

class ContextProcessor {
    /**
    *  @var Symfony\Component\Cache\Adapter\TraceableAdapter
    */
    protected $cache;

    public function __construct( AdapterInterface $cache) {
        $this->cache = $cache;
    }

    private function getContext(string $token): array
    {
        // здесь хотелось бы в случае неудачи проверить работает ли редис
        $item = $this->cache->getItem($token);

        if ($item->isHit()) {
            return $this->serializer->decode($item->get());
        } else {
            throw new HttpException(Response::HTTP_UNAUTHORIZED);
        }
    }
}
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы