开发者社区 问答 正文

关于Redis 多进程Uncaught exception 'RedisException' with message

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的文档:
screenshot
需要在onWorkerStart中建立redis连接,那么有work 、task 各8个,如果这样的话就会有16个redis连接(task、work启动时都会调用onWorkerStart函数)。

1)需要建立16个redis连接,我这样理解对吗?该如何改进呢?
2)每个redis连接我都要保存吗?这样岂不是用起来有点麻烦。
3)如果我以后work、task的数值增加,岂不会有更多的redis连接,我该怎么办呢?
4)是不是我使用方式有问题,那么我该怎么使用呢?

展开
收起
爵霸 2016-03-06 16:51:28 3438 分享 版权
1 条回答
写回答
取消 提交回答
  • 对,每个进程都要创建一个连接。如果启动了200个进程就一定需要200个连接。你的使用方式没错。

    2019-07-17 18:54:52
    赞同 展开评论