На проекте используется Редис в качестве 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);
}
}
}