问题:
有时候,有些服务长时间运行后,对redis的订阅失效了,但是只要重启服务器又可以了。
原因:
redis.conf中的tcp-keepalive影响的,这个配置默认是0 ,官方建议值为60 单位是秒,此配置的作用是检查健康的连接的时间,可以理解为心跳机制。如果设置为0则不会检查心跳信息,就会造成连接实际已经断开了。但是客户端不知道,也不会抛异常,所以客户端订阅不了消息也不会报错。
解决方案:
将这个配置值修改成60,再重启redis即可。
/etc/init.d/redis-server restart