0

複数のredisクエリを並行して実行しようとしていますが、エラーが発生します:

/var/lib/gems/1.9.1/gems/em-synchrony-1.0.2/lib/em-synchrony.rb:53:in `resume':
dead fiber called (FiberError)

コードは次のとおりです。

require 'em-synchrony'
require 'redis/connection/synchrony'
require 'redis'

redis = EM::Synchrony::ConnectionPool.new(size: 4) do
  Redis.new
end

EM.synchrony do
  multi = EM::Synchrony::Multi.new
  multi.add :a, redis.alpush('foo', 1)
  multi.add :b, redis.alpush('foo', 2)
  res = multi.perform

  p res

  EM.stop
end

助けてください

4

1 に答える 1

1

em-hiredisデフォルトのドライバーの代わりに、Eventmachine固有のgemを使用します。

gem install em-hiredis

require 'em-synchrony'
require 'em-synchrony/em-hiredis'

redis = EM::Synchrony::ConnectionPool.new(size: 4) do
          EM::Hiredis.new
        end

どこでもEM::Synchrony使用されますが、通常は、に付属の同期固有のライブラリを使用することをお勧めしますem-synchrony。そのため、ステートメントem-synchrony/em-hiredisではなくrequire em-synchrony

于 2012-12-02T17:47:18.387 に答える