multithreading - Redis 服务器在多线程 Perl 脚本中响应 'Resource temporarily unavailable'

标签 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/Redis.pm line 518 thread 2

正如消息所说,Redis 服务器在顶部。错误从这里开始(没有异常):

$self->{_redis}->rpush($key, $data);

我正在使用 Redis 2.4.14 和 package of Redis for Perl佩德罗·梅洛。

您认为这是处理这种数据结构的好方法吗?我的意思是,将 Redis 与线程一起使用?还有别的好办法吗?或者我应该怎么做才能解决这个问题?

提前致谢!

最佳答案

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

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

关于multithreading - Redis 服务器在多线程 Perl 脚本中响应 'Resource temporarily unavailable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808445/

相关文章:

linux + ksh + 向下舍入或向上舍入 - float

perl - 为什么在 Perl 的列表上下文中使用菱形运算符时出现关闭的文件句柄错误?

.net - Stackexchange.Redis 的 fire and forget 是否保证交付?

java - 可调用类给出错误 : doPing is not abstract and does not override abstract method call()?

c++ - 从控制台应用程序创建新控制台? C++

perl - 有没有办法查看变量使用了多少内存?

java - Spring Data Redis 在 TTL 到期后不清理辅助地理空间索引

ruby-on-rails - 有没有一种简单的方法可以在 Rails 和 Node.js 应用程序之间共享存储在 Redis 中的 session 数据?

c# - ConcurrentBag的性能,多次读取,罕见的修改

C#-BackgroundWorker不断更新控件: Error!