我在PHP项目中使用Redis。我使用phpredis作为客户端。有时,在长CLI脚本中,我会遇到PHP分段错误。
我之前经历过phpredis在连接超时时遇到问题。由于我的Redis配置被配置为在300秒后自动关闭空闲连接,我猜这会导致分段错误。
为了能够选择是否增加连接超时或将其默认为0(这意味着“永不超时”),我想知道可能的优点和缺点是什么?
为什么我永远不会关闭连接? 为什么我要确保连接不会保持打开状态?
由于
答案 0 :(得分:1)
通常,打开连接是一项昂贵的操作,因此现代最佳实践是保持开放。另一方面,开放连接需要资源(来自数据库)来管理,因此保持大量空闲连接打开也可能是有问题的。这种权衡通常通过使用连接池来解决。
那就是说,为什么PHP段错误更有趣。显然,超时是由长时间运行的命令(在您的情况下为CLI脚本)导致阻止Redis(mostly single threaded)访问PHP应用程序的连接。虽然这是众所周知的Redis行为,但我认为PHP(没有在客户端库中重新连接的事件)不会如此悲惨地使用它。
答案 1 :(得分:0)
您的问题的答案很大程度上取决于您的应用程序中使用redis的情况。那么,您是否应该永远关闭与空闲连接超时的连接?
一般来说,没有,你应该保持默认 - 0。为什么或何时:
P.S。当然你可以自己实现php中的代理类重新连接。我们在高负载环境中有redis - 实际上每秒约4000个连接。在2.4版本之后,我们不使用空闲连接超时。并且没有任何类型的麻烦。