1.背景描述:用Swoole作为TcpServer,配置了worker_num = 8 ,task_worker_num =8 .也就是会有16个进程。 创建了一个redid连接,在 onTask(8个task,每个task都会回调onTask方法)方法中读取redis保存的值。
2.问题描述:现在发现会报错Uncaught exception 'RedisException' with message 'read error on connection' 。初步判定是多个进程调用redid导致的,我只用一个task,是没有问题的。
看到swoole的文档:
需要在onWorkerStart中建立redis连接,那么有work 、task 各8个,如果这样的话就会有16个redis连接(task、work启动时都会调用onWorkerStart函数)。
1)需要建立16个redis连接,我这样理解对吗?该如何改进呢?
2)每个redis连接我都要保存吗?这样岂不是用起来有点麻烦。
3)如果我以后work、task的数值增加,岂不会有更多的redis连接,我该怎么办呢?
4)是不是我使用方式有问题,那么我该怎么使用呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。