【问题标题】:How to instruct predis to continue on error如何指示predis继续出错
【发布时间】:2020-02-25 00:49:29
【问题描述】:

如果Redis出现故障,是否可以指示php predis (https://github.com/nrk/predis)继续不死?

我有 Redis 来处理应用程序缓存,但是应用程序可以在没有缓存的情况下运行,它只会对数据库造成更大的影响。我更喜欢回退到数据库然后让应用程序死掉。我找不到指示 predis 在失败时继续的方法。

我想将连接限制设置为大约 5 秒,如果它无法连接到 Redis,应用程序应该继续运行。

这可能吗?

Fatal error: Uncaught Predis\Connection\ConnectionException: Operation timed out [tcp://128.0.0.1:6379]

【问题讨论】:

  • 你不能只是try-catch redis部分,如果redis失败就继续常规代码而不缓存?
  • 简单地使用 try-catch 块

标签: php redis predis


【解决方案1】:

您可以捕获连接异常并回退到您的数据库。 示例:

try {
    return $predis->get('foobar');
} catch(\Predis\Connection\ConnectionException $ex) {
    // fallback to database call
}

为了更简洁的代码,将数据库/redis 调用包装在一个抽象出实际连接的新类中,这样您的调用代码就不需要关心使用了哪个数据源。

【讨论】:

  • 另外,您可以使用$predis->ping(); 代替$predis->get('foobar');,这意味着您不必知道任何键的名称。
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 2014-01-04
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 2012-12-21
相关资源
最近更新 更多