0

我使用 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 包,看看它是否可以在那里解决。

4

1 回答 1

2

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

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

但是我不确定redis在请求的key不存在的情况下是否会抛出异常(其实我不这么认为)。

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

if ($redis->exists("foo:bar")) {
    return new Response('Oops');
}
于 2013-10-24T21:35:18.313 回答