BeWithYou

胡搞的技术博客

  1. 首页
  2. 运维/工具
  3. Redis客户端频繁断线解决

Redis客户端频繁断线解决


最近新开了一个项目,需要做抓取任务。不同的是本次我决定使用daemon进程的方式抓取,而不是使用以前定时任务的方式。这样就面临一个问题,如何保持Redis链接呢?

以前在daemon程序中进场遇到MySQL server gone away的情况,但是这里部门框架的ORM组件好像做了优化,不用考虑DB丢失链接的问题。但还是意料之中的遇到了Redis server gone away的情况。当然并不是程序抛出了这个错误,只是打个比方。

需要注意的是:

  1. 当客户端由于长时间处于idle状态,导致断开链接时,我们从PHP中去做GET SET操作,并不会抛出错误。只是简单的返回false结果。
  2. 即使用了pconnect方法去连接服务端,还是会因为上述问题导致断开链接。
  3. 问题在于redis.cnf文件里,关于timeout的配置。默认情况下是0,意思是不会超时断开链接。但是我们用的公司的redis服务,配置文件是不开放的,无法直接修改。
  4. 可以通过redis的CONFIG SET命令对于默认的配置进行修改。如修改timeout配置,可以用命令CONFIG SET timeout 0
  5. 在PHP中,对应的代码$redis->config('SET', 'timeout', 0)
回到顶部