Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Redis服务器在多线程Perl脚本中响应“资源暂时不可用”_Multithreading_Perl_Redis - Fatal编程技术网

Multithreading Redis服务器在多线程Perl脚本中响应“资源暂时不可用”

Multithreading Redis服务器在多线程Perl脚本中响应“资源暂时不可用”,multithreading,perl,redis,Multithreading,Perl,Redis,我正在用Perl开发一些脚本,它使用线程最多10个;每个线程读取一个文件,处理每一行,并将每一行的结果保存在Redis中的列表或哈希表中。在超过15个线程之前,一切都正常工作,有些线程会死掉,有些线程会执行它们必须执行的操作。这是我得到的错误: Thread 2 terminated abnormally: Error while reading from Redis server: Resource temporarily unavailable at /Library/Perl/5.10.0

我正在用Perl开发一些脚本,它使用线程最多10个;每个线程读取一个文件,处理每一行,并将每一行的结果保存在Redis中的列表或哈希表中。在超过15个线程之前,一切都正常工作,有些线程会死掉,有些线程会执行它们必须执行的操作。这是我得到的错误:

Thread 2 terminated abnormally: Error while reading from Redis server: Resource temporarily unavailable at /Library/Perl/5.10.0/Redis.pm line 518 thread 2
正如消息所说,Redis服务器位于顶部。错误从这里开始没有异常:

$self->{_redis}->rpush($key, $data);
我使用的是Redis 2.4.14和Pedro Melo的

您认为这是处理这些数据结构的好方法吗?我是说,用Redis和线程?还有别的好办法吗?或者我应该做些什么来解决这个问题


提前谢谢

我的错误是,我只建立了一个连接,并在每个线程中使用该连接。 解决方案:每个线程连接到Redis服务器


多亏了Didier Spezia的解决方案。

我的错误是,我只建立了一个连接,并且在每个线程中使用了该连接。 解决方案:每个线程连接到Redis服务器


感谢Didier Spezia提供的解决方案。

我不确定它是否有用,但如果改用它会发生什么?在网络资源中使用线程总是很麻烦的。嗨!我有点困惑,但是需要服务器来处理数据结构,Perl包是一个连接到Redis的客户端,或者你的意思是什么?Redis::client是一个单独的Perl包,用于与Redis对话,它使用了较新的Redis协议。不过,我不知道它是否对多线程有帮助。您是否对每个线程使用了一个redis连接?我认为您应该这样做,因为这个软件包的文档中没有提到多线程支持。谢谢!我建立了每个线程的连接,它的工作,谢谢!我不确定它是否有用,但如果你改用它会怎么样?在网络资源中使用线程总是很麻烦的。嗨!我有点困惑,但是需要服务器来处理数据结构,Perl包是一个连接到Redis的客户端,或者你的意思是什么?Redis::client是一个单独的Perl包,用于与Redis对话,它使用了较新的Redis协议。不过,我不知道它是否对多线程有帮助。您是否对每个线程使用了一个redis连接?我认为您应该这样做,因为这个软件包的文档中没有提到多线程支持。谢谢!我建立了每个线程的连接,它的工作,谢谢!