我正在用 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/