Redis多进程Uncaughtexception'RedisException'withmessage
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis多进程Uncaughtexception'RedisException'withmessage,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2298字,纯文字阅读大概需要4分钟。
内容图文
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)是不是我使用方式有问题,那么我该怎么使用呢?
回复内容:
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)是不是我使用方式有问题,那么我该怎么使用呢?
对,每个进程都要创建一个连接。如果启动了200个进程就一定需要200个连接。你的使用方式没错。
这样使用确实会创建16个连接。
不想保存连接的话,可以在用到redis时再创建连接,用pconnect方式。
由于不同进程的redis连接不能共享,随着进程数增加是会有更多的redis
可以在worker进程中写主要逻辑。涉及redis操作的部分封装成任务,由task进程执行。在启动task时,使用taskwait方法,等待任务的返回。这样相当于把task进程当成了连接池。
如果还有其他的慢速任务需要用task异步处理,则可以在启动task时,传入指定workerid,这样其实就是把task进程区分功能,有的负责redis数据处理,有的负责慢速任务。
1: redis和mysql机制不一样, 不怕连接多。
2: 没必要用pconnect, swoole本身是长驻内存的,connect之后,除非是worker重启了,连接才失效。
3: read error on connection, 只能你复用了同一个连接,但这个连接可能在其他的进程是被close了。
内容总结
以上是互联网集市为您收集整理的Redis多进程Uncaughtexception'RedisException'withmessage全部内容,希望文章能够帮你解决Redis多进程Uncaughtexception'RedisException'withmessage所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。