Symfony SncRedis Bundle 异常处理(如果 redis 不可用)


Symfony SncRedis Bundle exception handling if redis not available

我正在使用 redis 作为缓存来帮助提高生成成本高的数据的应用程序性能。目前我们只有一个 redis 实例正在运行,我观察到如果 redis 不可用 - 则返回 500 错误。

鉴于我正在缓存 - 如果 redis 关闭并呈现省略数据的页面,我宁愿继续处理。

我已经使用基本的 php try - catch 块进行了测试,但我无法捕获异常。

public function redisAction()
{
  try {
    $redis = $this->container->get('snc_redis.default');
    $val = $redis->get('foo:bar');
  } catch (Exception $e ) {
    $response = new Response('Oops ');
    return $response;
  }
 ....
}

我是否可以采取任何其他方法 - 我也在调查 sncredis 捆绑包,看看是否可以在那里解决。

鉴于您没有在类的顶部包含use Exception,您需要添加一个前导反斜杠......否则 PHP 将尝试捕获不存在Your'Current'Namespace'Exception

catch ('Exception $e ) {
    // ...
}

但是我不确定如果请求的密钥不存在,redis是否会引发异常(实际上我不这么认为)。

可以使用 exists() 方法来检查密钥是否存在。

if ($redis->exists("foo:bar")) {
    return new Response('Oops');
}