1

スレッド (最大 10) を使用する Perl でいくつかのスクリプトを開発しています。各スレッドはファイルを読み取り、各行を処理し、行ごとの結果をリストまたは 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 によるPerl 用の Redis のパッケージを使用しています。

これは、このデータ構造を処理する良い方法だと思いますか? つまり、スレッドでRedisを使用していますか? 他に良い方法はありますか?または、この問題を解決するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

1

私のエラーは、接続を 1 つだけ作成し、すべてのスレッドでその接続を使用していたことです。解決策: スレッドごとに Redis サーバーに接続します。

解決策を提供してくれたディディエ・スペツィアに感謝します。

于 2012-05-30T15:22:05.720 に答える