我的用例是一堆孤立的调用,在某些时候与redis交互。
问题是,在我的局域网环境中尝试了predis和credis时,我看到了获取连接的超长等待时间。超过1-3个客户端线程,我的PHP脚本连接到redis并选择数据库的时间从 18ms 到 700ms !
通常情况下,我会使用连接池或缓存连接并在我的所有线程中使用它,但我不认为这可以通过PHP在不同的脚本上完成。
我有什么办法可以加快速度吗?
答案 0 :(得分:0)
显然,Predis需要设置persistent
标志:https://github.com/nrk/predis/wiki/Connection-Parameters)以及FPM,这在Windows和Linux上设置都很令人沮丧,更不用说在我们的实时设置中切换到FPM之前的测试
我已经切换到Phpredis(https://github.com/phpredis/phpredis),这是一个PHP模块/扩展,现在一切都很好。使用$redis->pconnect()
,连接时间急剧下降,并且在多个脚本/线程之间保持一致。
警告:它在错误处理方面与Predis略有不同(它在实例化对象时失败,而不是在运行第一次调用时,对于不存在的值,它返回false
而不是null
- ???),如果从Predis切换,请注意这一点。