我正在使用 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');
}